将cv :: MAT图像转换为CVD :: Image

时间:2014-12-02 16:19:35

标签: c++ opencv mat cvd

我想将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);

1 个答案:

答案 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 methodCVD::BasicImage转换为CVD::Image