Я хотел преобразовать изображение 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);
Прежде всего, используйте cv::Rect
не CvRect
, Последний является устаревшим типом C из OpenCV версии 1.
Что касается вашего вопроса, вам нужно создать CVD::Image
так же, как вы создали cv::Mat
— из заданного буфера растровых изображений, где хранятся ваши фактические значения пикселей. Для доступа к растровому буферу cv::Mat
использование ptr()
метод. Строить CVD::Image
из буфера, используйте соответствующий CVD::BasicImage
конструктор, а затем конвертировать CVD::BasicImage
в CVD::Image
с помощью CVD::Image::copy_from
метод.