03-17-2010 08:45 AM
こんにちは。
OpenCVのライブラリの使用について下記3点ご教授いただけると助かります。
C言語のことをほとんど理解せずに質問しています。
トンチンカンな質問でしたら、ご容赦ください。
①cvCreateImage
例: IplImage* cvCreateImage( CvSize size, int depth, int channels );
CvSizeは、C言語で言う「構造体」になっています。
typedef struct CvSize
{
int width; ....幅
int height; .....高さ
} CvSize;
この関数は、そもそもLabViewで使用することは可能でしょうか。
ライブラリ関数呼び出しノードでの使用は可能でしょうか。
可能だとしたら、構造体をどのように定義して引数として渡せば良いのでしょうか。
②cvLoadImage
例: IplImage* cvLoadImage( const char* filename, int flags=CV_LOAD_IMAGE_COLOR );
この関数は、そもそもLabViewで使用することは可能でしょうか。
ライブラリ関数呼び出しノードでの使用は可能でしょうか。
可能だとしたら、関数の戻り値をどのように定義すればよいでしょうか。
タイプが「文字列」、形式が「C文字列ポインタ」、でしょうか。。。
③cvSaveImage
例: int cvSaveImage( const char* filename, const CvArr* image );
引数のCvArrは、②のIplImage(構造体)で良いと思うのですが、
引数をどのように定義すれば良いでしょうか。
cvLoadImageでファイルをロードし、同じ画像をcvSaveImageで保存するような
サンプルプログラムなどあると、とても助かります。
ライブラリ関数呼び出しノードを使用する際の、
「スレッド」、「呼び出し規約」の設定もどうすべきかよくわかりません。
「C文字列ポインタ」「文字列ハンドル」「文字列ハンドルポインタ」等についても、使い分けがよくわかりません。
OpenCvを使う上で必要な内容でしたら、合わせてご教授いただければ幸いです。
Solved! Go to Solution.
04-06-2010 07:24 AM
いろいろ試して、OpenCVのライブラリが使えるようになりました。
何かの参考になればと思い、自問自答で回答します。
OpenCVでは、
dllの戻り値や引数が構造体へのポインタであることがあり、これを
どう扱うかがポイントのようです。
方法の1つとして;
「ポインタ」そのものの型を整数だと考え、
「構造体へのポインタ」は、整数(値)
「構造体へのポインタへのポインタ」は、整数(値)へのポインタ
として取り扱うことで、構造体自体を定義しなくても、dllが使用できます。
>cvLoadImageでファイルをロードし、同じ画像をcvSaveImageで保存
については、以下のようなダイアグラムで実現できました。
このほか、USBカメラからの動画表示等も、同じ考え方でできました。
05-18-2011 10:54 PM
DLLのソースファイルをアップデートしていただけますか?
よろしくお願いいたします
05-24-2011 11:17 AM
Guanghaoさん
こんにちは。
>DLLのソースファイルをアップデートしていただけますか?
サンプルviということですか? だとすれば、
の、5番目の書き込みで、OpenCVを使用したサンプルviをアップしてあります。
圧縮してありますので、すべてのファイルを同じフォルダに展開してから起動させてみてください。
LabView8.6です。
DLLのソースファイルをアップデートしていただけますか?