趣味は車輪の再発明♪

[opencv] CvArr*型の仮引数について


詳解 OpenCV ―コンピュータビジョンライブラリを使った画像処理・認識
Gary Bradski Adrian Kaehler
オライリージャパン
売り上げランキング: 25,746


■ たかみんつ / ソフト開発メモINDEX / OpenCVリファレンス(じぶん用) / 関数・クラスの使い方・サンプルなど /


OpenCVには、CvArr型へのポインタを引数として受け取る関数が多くありますが、実際にCvArrという型を使用することはありません。

これは、受け取るポインタの型を(コンパイル時には)限定しないという宣言です。

IplImageやCvMat,CvSeq構造体など、複数の型へのポインタを受け取る引数がこのような宣言になっています。 物によっては、実行時にエラーになるかもしれませんので注意。

CvArrはvoidとしてtypedefされているため、CvArr*は、void*と同義。よって、キャストする必要もありません。

実際に何が渡されたかは、関数の内部で、各構造体の最初にある構造体のサイズで判定されるようです。 CvArrはオブジェクト指向言語での抽象スーパークラス的なものですが、 C言語ではクラスを表現できないためこのようなことになっているのでしょう。 これが気持ち悪い場合は、C++インタフェースを使用するべきですね。

IplImage*だけを受け取るような関数は、CvArr*ではなく、IplImage*として宣言されているはずです。


Pythonプロフェッショナルプログラミング 第2版
秀和システム (2015-05-21)
売り上げランキング: 1,813


クラウドではじめる機械学習 Azure MLでらくらく体験
脇森浩志 杉山雅和 羽生貴史
リックテレコム
売り上げランキング: 2,081

実践Node.js プログラミング (Programmer's SELECTION)
Mike Cantelon Marc Harter T.J. Holowaychuk Nathan Rajlich
翔泳社
売り上げランキング: 40,213

■ たかみんつ / ソフト開発メモINDEX / OpenCVリファレンス(じぶん用) / 関数・クラスの使い方・サンプルなど /



RSS Feed Widget
[opencv] CvArr*型の仮引数について
(http://bicycle.life.coocan.jp/takamints/index.php/doc/opencv/doc/CvArr)
by Koji Takami ( email: vzg03566@gmail.com, GitHub: takamin )