我正在图像中进行一些椭圆识别,为此我打开了一个简单的图像:
img = imread("M:/Desktop/PsEyeRight.jpg", CV_LOAD_IMAGE_COLOR);
选择 ROI(这是我在 OpenCV 2.4.6 中设置 ROI 的唯一方法,其中旧库有一个 cvSetImageROI() 和 cvResetImageROI() 我认为更简单):
Mat roi(img, Rect(Point(205, 72), Point(419,285)));
用 cvtColor 改变它的颜色空间:
cvtColor(roi, roi, CV_BGR2GRAY);
申请门槛:
threshold(roi, roi, 150, 255, THRESH_BINARY);
然后我使用克隆图像执行 findContours,因为 findContours 修改了函数中传递的图像,然后我将 ROI 更改回 BGR 颜色空间:
cvtColor(roi, roi, CV_GRAY2BGR);
并在 roi 中绘制所有找到的椭圆。
当我显示 roi 时,我可以看到一切正常工作 100%,但我期待当我显示原始图像时,它将是原始图像,其中 ROI 为阈值,其中包含图纸,但我只是得到原始图像本身,就像什么都没有改变。我相信这是因为 cvtColor 正在复制 roi,所以它不再“指向” img。
进行相同处理并在原始图像中包含 ROI 以显示算法进度的最佳方法(或推荐)是什么?