繁体   English   中英

OpenCV LabView复制图像到更大的图像

[英]OpenCV LabView Copy Image to a bigger one

几天以来,我有一个大问题。 我在LabView中创建了一个大小为4096x4096的空图像,并希望在OpenCV中将较小的图像复制到它。 结果,我每次都会得到黑色图像。

Mat imgIn = Mat(SizeX, SizeY, CV_16U, &image[0]);          // Small pic
Mat imOut = Mat(4096, 4096, CV_16U, &imgOut[0]);

imgIn.copyTo(imOut(Rect(500, 500, imgIn.size().width, imgIn.size().height)));

for(int i = 0;i < 4096;i++){
    for(int j = 0;j < 4096;j++){

         if((imOut.data[i,j])>300) *test += 1;
         *imgOut++ = imOut.data[i,j];
    } 
}

这是我来自Labview的新VI:

我的结果:

更新:更新代码后:

Mat imgIn = Mat(SizeX, SizeY, CV_16U, &image[0]);          // Small pic
Mat imOut = Mat(4096, 4096, CV_16U, &imgOut[0]);

imgIn.copyTo(imOut(Rect(500, 500, imgIn.size().width, imgIn.size().height)));

图片:

更新2代码:

// --- Dll entry point ---
 BOOL APIENTRY DllMain( HANDLE hModule, 
                   DWORD  ul_reason_for_call, 
                   LPVOID lpReserved
                 )
{
UNREFERENCED_PARAMETER(hModule);
UNREFERENCED_PARAMETER(lpReserved);
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
    break;
}
return TRUE;
}


#ifdef __cplusplus
extern "C" {
#endif  /* __cplusplus */


__declspec(dllexport) INT myDoSomething(unsigned int *test, unsigned short *image, int SizeX, int SizeY, unsigned short *imgOut){

// Alloc Memory
Mat imgIn = Mat(SizeX, SizeY, CV_16U, &image[0]);          // Small pic
Mat imOut = Mat(4096, 4096, CV_16U, &imgOut[0]);           // Big pic

imgIn.copyTo(imOut(Rect(1000, 1000, imgIn.size().width, imgIn.size().height)));

问题解决了:

OpenCV将矩阵在LabView中的处理方式不像X,Y(列,行),而是列,列!

Mat imgIn = Mat(SizeY, SizeX, CV_16UC1, &image[0]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM