こんにちは、
を実行OpenCV
してDLL
、アプリケーションで使用しようとしていLabVIEW
ます。
で画像を正しく取得LV
し、バイト配列をに渡しましたDLL
。
ループしてテキストファイルにすべてのピクセルの値を出力し、それらをLVの出力と一致させることができるので、LVが最初に2列を追加することを除いて、すべてのピクセルが正しい位置にあることがわかります。最初の2つの値は高さと幅用に予約されており、残りは任意の数値です。しかし、これが行うべきことは、画像の左側にストリークを生成することだけです。
次に、次の行を使用して画像を変換して表示します。
a[0]
、a[1]
...などはチャネルです。
出力画像は、ピクセルが15〜20ピクセルの間隔で等間隔に配置され、黒いピクセルで囲まれた、非常に水平方向に引き伸ばされた画像として出力されます。スクリーンショットを添付しました
_declspec (dllexport) double imageProcess(int **a, int &x, int &y, int &cor,int &cog,int &cob,int &cow, int th, int hth)
{
y = a[0][0];
x = a[0][1];
Mat image(y, x, CV_8U, a[0]);
namedWindow( "Display window", CV_WINDOW_NORMAL ); // Create a window for display.
imshow( "Display window", image ); // Show our image inside it.
return (0);
}
さらに、同じ効果でこのコードを使用してみました:
IplImage* cv_image = cvCreateImageHeader(cvSize(x,y), IPL_DEPTH_8U, 1);
cvSetData(cv_image, a[0], cv_image->widthStep);
Mat image = Mat(cv_image, false);
誰かが私の画像作成中にこれが起こっている理由を説明するのを手伝ってもらえますか?
注:残念ながら、LVからの元の画像/キャプチャを提供することはできませんが、そのようには見えず、すべてをグレースケールで処理していると言えます。
出力画像: