From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

OpenCVの使い方

解決済み
解決策を見る

こんにちは。

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を使う上で必要な内容でしたら、合わせてご教授いただければ幸いです。

 

 

メッセージ1/4
7,804件の閲覧回数
解決策
トピック作成者ITOBが受理

いろいろ試して、OpenCVのライブラリが使えるようになりました。

何かの参考になればと思い、自問自答で回答します。 

 

 

OpenCVでは、

 dllの戻り値や引数が構造体へのポインタであることがあり、これを

 どう扱うかがポイントのようです。

 

 方法の1つとして;

 

  「ポインタ」そのものの型を整数だと考え、

    「構造体へのポインタ」は、整数(値)

    「構造体へのポインタへのポインタ」は、整数(値)へのポインタ

  として取り扱うことで、構造体自体を定義しなくても、dllが使用できます。

 

 

>cvLoadImageでファイルをロードし、同じ画像をcvSaveImageで保存

 

  については、以下のようなダイアグラムで実現できました。
  このほか、USBカメラからの動画表示等も、同じ考え方でできました。

 

  OpenCV_dll使用例.JPG

 

 

 

 

メッセージ2/4
7,678件の閲覧回数

DLLのソースファイルをアップデートしていただけますか?

よろしくお願いいたします

0 件の賞賛
メッセージ3/4
6,115件の閲覧回数

Guanghaoさん

 

こんにちは。

 

>DLLのソースファイルをアップデートしていただけますか?

  サンプルviということですか? だとすれば、

 

http://forums.ni.com/t5/NI%E8%A3%BD%E5%93%81%E3%83%87%E3%82%A3%E3%82%B9%E3%82%AB%E3%83%83%E3%82%B7%E...

 

 の、5番目の書き込みで、OpenCVを使用したサンプルviをアップしてあります。

 圧縮してありますので、すべてのファイルを同じフォルダに展開してから起動させてみてください。

 LabView8.6です。

 

 

DLLのソースファイルをアップデートしていただけますか?

 

0 件の賞賛
メッセージ4/4
6,059件の閲覧回数