cv::Mat 画像データを共有メモリを使用しC++からVB.NETへ転送する方法 [VB]
OpenCVで画像処理を行う部分はWin32 C/C++、GUI部は比較的楽に開発できるVB.NETを使用したかった。そのため画像データを共有メモリ経由でWin32 C/C++ → VB.NETへ転送するコードを書いたが以下の問題のた試行錯誤を繰り返して時間を取られることになった。最終的に成功することが出来たので、コードを残しておく。
試行錯誤した構成
OpenCV cv::MatまたはIplImage画像形式のまま、共有メモリに書き込み、VB.NETでOpenCVを利用できる、OpenCvSharpを導入することで画像を転送する。
C/C++側から共有メモリへ書き込みが出来るが、C/C++、VB.NET共に読み込みできない。調査を進めると、画像データ内のポインタがエラーとなっていた。調べてみるとポインタの実メモリ部は共有メモリには書き込まれていないことが判明。確かに別のアドレス空間から、このポインタを参照してもデータにはアクセスできないですね。
今回の構成
C/C++側でOpenCVデータをビットマップに変換し、そのデータ部を共有メモリに書き込む。ビットマップインフォメーション部の転送は時間がないので今回は考えていない。おいおい「構造体の共有メモリ転送」としてアップします。
以下にコードを示す。
C++側ソース
BmpMemクラス ----------
BmpMem.h
BmpMem.cpp
main()部
VB.NET部
参考サイト
- http://seesaawiki.jp/urakana-tips/d/OpenCV%A4%F2Win32API%A4%C8%C1%C8%A4%DF%B9%E7%A4%EF%A4%BB%A4%C6%BB%C8%A4%A4%A4%BF%A4%A4
- http://buaiso.blogspot.jp/2012/07/boost.html
- http://dobon.net/vb/bbs/log3-31/19304.html
- http://imagingsolution.net/program/opencv/iplimage2bitmap/
2014-02-20 00:08
nice!(0)
コメント(2)
トラックバック(0)
Interaction Of Nyquil And Amoxicillin http://buycialisuss.com - cialis 40 mg How Much Amoxicillin For Respiratory Infection <a href=http://buycialisuss.com>п»їcialis</a> Uri Amoxil
by MatgehasY (2020-02-28 15:25)
Ďakujem za ďalší skvelý príspevok. Kde inde mohol niekto získať tento typ informácií takýmto ideálnym spôsobom písania? Budúci týždeň mám prezentáciu a hľadám takéto informácie.
https://www.bacarasite.com/
by 바카라사이트닷컴 (2023-03-22 11:08)