У меня на самом деле проблема с Iterator в OpenCV. Я читаю из LabView a Image и сохраняю это в Mat imgIn. Впоследствии я создаю второй Mat для изображения, который выполняет вещи Mat imOut. Когда я клонирую это и попытаюсь отправить его обратно в LabView, я получаю черное изображение, чтобы не было отправлено никакой информации.Ошибка OpenCV MatIterator
#include <windows.h>
#include "extcode.h"
#include <iostream>
#include <stdio.h>
#include "opencv2/opencv.hpp"
#include "opencv2/core.hpp"
#include "opencv2/core/utility.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
using namespace cv;
using namespace std;
// --- 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(short* M, short* N, short* image, int SizeX, int SizeY, short* imgOut){
// Alloc Memory
Mat imgIn(SizeX, SizeY, CV_16S, &image[0]);
Mat imOut(SizeX, SizeY, CV_16S, &imgOut[0]);
// Clone Source Image
imOut = imgIn.clone();
// Get size for DFT
*M = getOptimalDFTSize(imgIn.rows);
*N = getOptimalDFTSize(imgIn.cols);
MatIterator_ it;// = imOut.begin<short>();
//for(int x=0;x<=SizeX;x++){
//imgOut = imOut.at<short>(x,y);
//}
return 0;
}
#ifdef __cplusplus
}
#endif /* __cplusplus */
В LabView все правильно. VS ошибка:
Fehler 1 error C2955: "cv::MatIterator_": Für die Verwendung der template-Klasse ist eine template-Argumentliste erforderlich.