感兴趣的区域"/>
OpenCV 在ImShow窗体上选择感兴趣的区域
窗体上选择感兴趣ROI区域
在计算机视觉处理中, 通常是针对图像中的一个特定区域进行处理, 有时候这个特定区域需要人来选择, OpenCV 也提供了窗口选择ROI机制.
窗体支持两种选择ROI区域的方法, 一个是单选, 一个是多选, 操作方法如下:
- 单选: 通过鼠标在屏幕上选择区域, 然后通过"空格键" 或 "回车键"完成确定, 或者通过"C"键取消, 对应的 SelectROI()函数返回一个Rect对象, 如果取消选择, 返回值为 Rect.Empty
- 多选: 通过鼠标键屏幕上完成多次选择, 每一次是通过"空格键" 或 "回车键"完成确定, 最后一次通过"ESC"结束选择.
- 单选的函数是 Cv2.SelectROI()
- 多选的函数是 Cv2.SelectROIs()
测试代码
private void readWriteTest(){string pngFile = @"D:\my_workspace\opencv\images\draw.png";var srcMat = Cv2.ImRead(pngFile, ImreadModes.Color);Cv2.ImShow("srcMat", srcMat);//选择单个 ROIvar rect = Cv2.SelectROI("srcMat", srcMat, true);if (rect != OpenCvSharp.Rect.Empty){Cv2.ImShow("Single ROI", srcMat[rect]);}//选择多个 ROIvar rects = Cv2.SelectROIs("srcMat", srcMat, true);int i = 0;foreach (var myRect in rects){if (myRect != OpenCvSharp.Rect.Empty){i++;Cv2.ImShow($"Mulptie ROI #{i}", srcMat[myRect]);}}Cv2.WaitKey();Cv2.DestroyAllWindows();}
测试结果截图:
更多推荐
OpenCV 在ImShow窗体上选择感兴趣的区域
发布评论