OpenCV LabView Копировать изображение в увеличенное изображение

У меня большая проблема с некоторых дней. Я создал в LabView пустое изображение размером 4096×4096 и хочу скопировать меньшее изображение на него в 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];
}
}

Вот мой новый VI от Labview:

Мой результат:

Обновление: после обновления кода:

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)));

Pic:

Обновление 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)));

0

Решение

Задача решена:

OpenCV рассматривает Матрицы не как в LabView, как X, Y (столбец, строка), а как строка, столбец !!

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]