0
我有一個很大的問題,因爲有些日子。我在LabView中創建了一個大小爲4096x4096的空圖像,並且希望在OpenCV中將更小的圖像複製到它。 因此,我每次都會得到一張黑色的圖像。OpenCV 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)));
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)));
'copyTo'代碼是正確的。你可以嘗試將'imOut.data [i,j]'改成'imOut.at(i,j)'?什麼是'imgOut'和'test'? –
Miki
仍然沒有改變,但我嘗試了另一種節省計算時間的方法,並且更容易。唯一的問題是,現在圖像顯示奇怪。 – Xeno1987
請提供一個[mcve],或者我們只能猜測; D – Miki