osashimiさんはCを書けるようですので、その前提で回答します。
OpenCVに関する情報を集める際は、C++のリファレンスに当たるのが一番早いです。
もちろん100%の信頼は置けませんが、かなりアタリを付けることが出来ます。
OpenCV 3.2.0: cv::VideoCapture Class Reference - § read()
read()
virtual bool cv::VideoCapture::read(OutputArray image)
Grabs, decodes and returns the next video frame.
Parameters
[out] image the video frame is returned here. If no frames has been grabbed the image will be empty.
Returns
false if no frames has been grabbed
多少インタフェースは異なりますが、retがこの戻り値に当たることはわかります。
なお、Pythonの対話環境上でも、組み込み関数helpで簡単に使い方を見られます。
Python
1>>> import cv2
2>>> help(cv2.VideoCapture().read)
3Help on built-in function read:
4
5read(...) method of cv2.VideoCapture instance
6 read([, image]) -> retval, image
7 . @brief Grabs, decodes and returns the next video frame.
8 .
9 . @param [out] image the video frame is returned here. If no frames has been grabbed the image will be empty.
10 . @return `false` if no frames has been grabbed
11
12[後略]
書いてある内容は上記のリファレンスとほぼ同一ですね。
追記
PythonとC++とでインタフェースが異なる理由
理由は主に三つです。
- Pythonでは、タプルを利用することによって複数のオブジェクトを簡単に返せる。
C++で同様のことをしようと思うと、そのためだけに構造体などを利用せねばなりません。
- PythonはGCを採用しており、オブジェクトの寿命について考える必要がほとんどない。
C++ではオブジェクトのスコープを意識しないでコードを書くのは不可能です。
- Pythonでは、意識せずともオブジェクトの移行が軽量。
C++ではデフォルトの値の移行がフルコピーであり、意図せず重くなることがあります。
よって、複数のオブジェクトが返される必要がある場合...
- C++では、引数を参照で受け取って書き換えることが多いです。
- Pythonでは、オブジェクトをタプルで返すことが多いです。
C++も、C++11の登場以降かなり近代的なコードを書けるようになりました。
しかし、開発者間でそのような機能が完全に周知浸透しているかと言うと微妙です。
まあ、お手軽にサクサクかけるのがPythonであることは間違いないと思います。
Python寄りの意見を書いていますが、私はどちらかと言うとC++の方が好きだったりします。
もちろん上記三つの問題点はC++でも解決可能です。ちょっと難解なだけで。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/14 14:31
2017/11/14 14:33
2017/11/14 15:02