我想将cv :: MAT图像转换为CVD :: Image,但我不知道该怎么做。原因是因为之前我有一个CVD :: Image,我将其转换为cv :: MAT,以便在图像中设置ROI区域,现在,我需要CVD中的图片。 用于执行它的代码,它是以下内容:
CVD::Image<CVD::byte> Imatge_a_modificar;
Imatge_a_modificar.copy_from(mimFrameBW_workingCopy); //The image is copied from another one
int x = frameWidth/2;
int y = frameHeight/2;
CvRect sROI = cvRect(x,y, frameWidth/2, frameHeight/2);
int xroi = sROI.x;
int yroi = sROI.y;
cv::Mat image(frameWidth,frameHeight,CV_8UC4,Imatge_a_modificar.data());
cv::Mat imageROI(image, sROI);
答案 0 :(得分:0)
首先,使用cv::Rect
,而不是CvRect
。后者是OpenCV版本1中过时的C类型。
关于您的问题,您需要创建CVD::Image
,方法与创建cv::Mat
的方式相同 - 来自存储实际像素值的给定位图缓冲区。要访问cv::Mat
使用ptr()
method的位图缓冲区。要从缓冲区构建CVD::Image
,请使用corresponding CVD::BasicImage
constructor,然后使用CVD::Image::copy_from
method将CVD::BasicImage
转换为CVD::Image
。