下午好,
我正在尝试运行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 的原始图像/捕获,但我可以说它看起来不像那样,我正在处理灰度的所有内容。
输出图像: