03
2016-01

从零开始学习OPENCV之查找ROI(1)

ROI,即:region of interest,感兴趣区域。也就是从图像中选择的一个图像区域,以便进行进一步处理。

 

尝试从照片中识别铭牌,第一步是查找铭牌所在区域,所用照片如下:

目标是从上图找到这个区域:

 

首先是要确定边缘,流程如下:

  1. 加载图片:
    Mat  srcImage= imread("1.jpg");  // 与c#工程不同,1.jpg文件放置在工程目录下,也就是cpp文件所在的目录.
  2. 转化为灰度图:
    Mat  grayImage;
    cvtColor(srcImage,grayImage,CV_BGR2GRAY);
  3. 二值化:
    Mat  binImage;
    threshold(grayImage, binImage, 90, 255, THRESH_BINARY);

 

完整的代码如下:

#include<opencv.hpp>
 
usingnamespace cv;
 
int main()  
{  
    Mat  srcImage= imread("1.jpg");  
    Mat  grayImage;
    cvtColor(srcImage,grayImage,CV_BGR2GRAY);
    Mat  binImage;
    threshold(grayImage, binImage, 90, 255, THRESH_BINARY);
 
 
    imshow("srcImage", srcImage); 
    imshow("binImage", binImage); 
 
    cvWaitKey(-1);  
    return 0;  
}


 

 

结果如下:

 

其中,threshold函数的阈值用90,是试出来的结果:80时左上角有缺失,100时图像中间有分裂。如下图:

 

这样就存在一个问题,换一张照片90这个阈值可能就不适用了,如下面这张图,即使是90也会造成ROI中间的断痕。

« 上一篇下一篇 »

相关文章:

留言列表:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。