OpenCV中的图像数组

时间:2014-07-20 00:12:59

标签: c++ opencv

我正在开发一个基于模板匹配的项目,使用OpenCV。

如何制作图像数组?

cv::Mat ref_temp[7]; // Array Declaration as we do in c/c++
cv::Mat image = cv::imread("ref.jpg",1);  
cv::Mat ref_image;

image.copyTo( ref_image);   

cv::Mat ref_temp(1) =(ref_image, cv::Rect(550,85, 433, 455));
cv::Mat ref_temp[2] =(ref_image, cv::Rect(1042,85,433, 455));
cv::Mat ref_temp[3] =(ref_image, cv::Rect(1528,85,433, 455));
cv::Mat ref_temp[4] =(ref_image, cv::Rect(65, 1010, 423, 442));
cv::Mat ref_temp[5] =(ref_image, cv::Rect(548, 1010, 423, 442));
cv::Mat ref_temp[6] =(ref_image, cv::Rect(1025, 1010, 423, 442));
cv::Mat ref_temp[7] =(ref_image, cv::Rect(1529, 1010, 423, 442));

我不确定我是以正确的方式做到这一点。 请帮帮我。

1 个答案:

答案 0 :(得分:1)

首先,从ref_image创建一个感兴趣区域(ROI),其中ROI的左上角是(550,85),宽度和高度是443& 455:

cv::Mat ref_img_roi(ref_image, cv::Rect(550, 85, 433, 455);

接下来,将ROI分配给图像阵列:

ref_temp[0] = ref_img_roi;

现在,ref_temp[0]ref_img_roi的{​​{1}}中指定的区域的引用。

在您的代码中,C ++数组的使用不正确。使用ref_image时,您不必放置cv::Mat。并且,数组的索引应为0~6。 以下代码将起作用:

ref_temp