В моей программе мне нужно немного смешать C++ и c api.opencv: Convert Mat to IplImage Issue
я захватить изображение с C API и получить один кадр:
CvCapture* capture = 0;
capture = cvCaptureFromCAM(0);
// some code
IplImage* image = cvQueryFrame(capture);
Затем он преобразуется в Mat
, чтобы быть совместимым с новым C++ API, и я получаю ROI:
Mat captureFrame = cvarrToMat(image);
// some code
Mat roi = captureFrame(roiRect);
в конце концов, я должен преобразовать Mat обратно IplImage * для работы с C API:
IplImage imgCaptureFrame = roi;
, когда я использую это как ссылка & рои я получаю
OpenCV Error: Assertion failed (svec[j].size == dst.size && svec[j].depth() == d
st.depth() && svec[j].channels() == 1 && i < dst.channels()) in unknown function
, file C:\slave\builds\WinInstallerMegaPack\src\opencv\modules\core\src\convert.
cpp, line 1306
в коде с помощью C API.
Когда я только использую
IplImage imgCaptureFrame = captureFrame;
вместо
IplImage imgCaptureFrame = roi;
нет никакой ошибки, но тогда у меня нет моего КОРОЛЯ.
Что я могу сделать, чтобы преобразовать мой roi, чтобы использовать его в c api?
Какое утверждение не удалось? Вы получаете описание? –
Добавлена информация об ошибке. – user2737037
Является ли [этот ответ] (http://stackoverflow.com/a/9428938/2065121) полезным? –