我正在开发一个基于模板匹配的项目,使用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));
我不确定我是以正确的方式做到这一点。 请帮帮我。
答案 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