http://blog.csdn.net/superdont/article/details/24935383

2014-05-03 21:38 6786人阅读 评论(2) 收藏 举报
 分类:
opencv(24) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

采用OpenCV249利用边缘检测、轮廓检测、腐蚀实现的车牌定位,具体为:

  1. Mat srcImage=imread("image/000.jpg");
  2. //imshow("a",srcImage);
  3. int i,j;
  4. int cPointR,cPointG,cPointB,cPoint;//currentPoint;
  5. Mat resizeImage;
  6. resize(srcImage,resizeImage,Size(400,300));
  7. Mat grayImage;
  8. cvtColor(resizeImage,grayImage, CV_BGR2GRAY);
  9. Mat medianImage;
  10. medianBlur(grayImage,medianImage,3); //最后一个参数需要为奇数
  11. Mat sobelImage;
  12. //参数为:源图像,结果图像,图像深度,x方向阶数,y方向阶数,核的大小,尺度因子,增加的值
  13. Sobel(medianImage,sobelImage,CV_8U,1,0,3,0.4,128);
  14. Mat normalizeImage;
  15. normalize(sobelImage,normalizeImage,255,0,CV_MINMAX);
  16. Mat binaryImage;
  17. threshold(normalizeImage,binaryImage, 100, 255, THRESH_BINARY_INV );
  18. Mat closeImage;
  19. //morphologyEx(binaryImage,closeImage,MORPH_CLOSE,Mat(3,1,CV_8U),Point(0,0),10);  //闭运算
  20. Mat openImage(closeImage.rows,closeImage.cols,CV_8UC1);
  21. //morphologyEx(closeImage,openImage,MORPH_OPEN,Mat(3,3,CV_8U),Point(0,0),1);   //开运算
  22. //  erode(openImage,openImage,Mat(3,3,CV_8U),Point(-1,-1),10);
  23. dilate(binaryImage,openImage,Mat(3,3,CV_8U),Point(-1,-1),6);
  24. /*
  25. Mat rgbImage;
  26. cvtColor(openImage,rgbImage, CV_GRAY2BGR);
  27. */
  28. //cvtColor(openImage,openImage, CV_BGR2GRAY);
  29. //vector<vector<Point> > contours;
  30. //vector<Vec4i> hierarchy;
  31. //openImage=imread("test.png");
  32. imshow("openImage",openImage);
  33. /// Detect edges using canny
  34. //  Canny( src_gray, canny_output, thresh, thresh*2, 3 );
  35. /// Find contours
  36. /*  Mat thresholdImage;
  37. cvtColor(openImage,openImage, CV_BGR2GRAY);
  38. threshold( openImage,thresholdImage,127, 255, THRESH_BINARY );
  39. openImage=thresholdImage;*/
  40. vector<vector<Point> > contours;
  41. vector<Vec4i> hierarchy;
  42. findContours(openImage, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, Point(0, 0) );
  43. Scalar color = Scalar( rng.uniform(0, 255), rng.uniform(0,255), rng.uniform(0,255) );
  44. for( int i = 0; i < contours.size(); i++ )
  45. {
  46. //使用边界框的方式
  47. CvRect aRect =  boundingRect(contours[i]);
  48. int tmparea=aRect.height*aRect.height;
  49. if (((double)aRect.width/(double)aRect.height>2)&& ((double)aRect.width/(double)aRect.height<6)&& tmparea>=200&&tmparea<=25000)
  50. {
  51. rectangle(resizeImage,cvPoint(aRect.x,aRect.y),cvPoint(aRect.x+aRect.width ,aRect.y+aRect.height),color,2);
  52. //cvDrawContours( dst, contours, color, color, -1, 1, 8 );
  53. }
  54. }
  55. imshow("contour",resizeImage);

效果一般,部分测试图像:

测试了很多图片,这几张基本有个样子,通过调整腐蚀的次数,可以针对不同的图像进行定位。

参考资料:

学习OpenCV——车牌检测(定位):http://blog.csdn.net/yangtrees/article/details/7444470

OpenCV使用边缘提取、腐蚀、轮廓进行车牌定位的更多相关文章

  1. 车牌定位与畸变校正(python3.7,opencv4.0)

    一.前言及思路简析 目前车牌识别系统在各小区门口随处可见,识别效果貌似都还可以.查阅资料后,发现整个过程又可以细化为车牌定位.畸变校正.车牌分割和内容识别四部分.本篇随笔主要介绍车牌定位及畸变校正两部 ...

  2. EasyPR--开发详解(2)车牌定位

    这篇文章是一个系列中的第三篇.前两篇的地址贴下:介绍.详解1.我撰写这系列文章的目的是:1.普及车牌识别中相关的技术与知识点:2.帮助开发者了解EasyPR的实现细节:3.增进沟通. EasyPR的项 ...

  3. EasyPR源码剖析(4):车牌定位之Sobel算子定位

    一.简介 sobel算子主要是用于获得数字图像的一阶梯度,常见的应用是边缘检测. Ⅰ.水平变化: 将 I 与一个奇数大小的内核进行卷积.比如,当内核大小为3时, 的计算结果为: Ⅱ.垂直变化: 将: ...

  4. 车牌识别LPR(四)-- 车牌定位

    第四篇:车牌定位 车牌定位就是采用一系列图像处理或者数学的方法从一幅图像中将车牌准确地定位出来.车牌定位提取出的车牌是整个车牌识别系统的数据来源,它的效果的好坏直接影响到整个系统的表现,只有准确地定位 ...

  5. EasyPR源码剖析(2):车牌定位

    上一篇主要介绍了车牌识别的整体框架和流程,车牌识别主要划分为了两个过程:即车牌检测和字符识别,而车牌识别的核心环节就是这一节主要介绍的车牌定位,即 Plate Locate.车牌定位主要是将图片中有可 ...

  6. 基于matlab的蓝色车牌定位与识别---识别

    接着昨天的工作,把最后一部分识别讲完. 关于字符识别这块,一种最省事的办法是匹配识别,将所得的字符和自己的标准字符库相减,计算所得结果,值最小的即为识别的结果.不过这种方法是在所得字符较为标准的情况, ...

  7. 【原】基于matlab的蓝色车牌定位与识别---绪论

    本着对车牌比较感兴趣,自己在课余时间摸索关于车牌的定位与识别,现将自己所做的一些内容整理下,也方便和大家交流. 考虑到车牌的定位涉及到许多外界的因素,因此有必要对车牌照的获取条件进行一些限定: 一.大 ...

  8. python-opencv实现简单的车牌定位

    车牌定位的原理:https://blog.csdn.net/relocy/article/details/78705662 训练好的分类器:https://github.com/zeusees/Hyp ...

  9. OpenCV函数:提取轮廓相关函数使用方法

    opencv中提供findContours()函数来寻找图像中物体的轮廓,并结合drawContours()函数将找到的轮廓绘制出.首先看一下findContours(),opencv中提供了两种定义 ...

随机推荐

  1. haoce修改mysql

    修改时长余额 select * from sys_user_product up where up.user_id in(select u.id from sys_user u where login ...

  2. Android实现动画循环的方式

    每次想到循环播放.重复执行时,脑海中总是冒出在while(true)的实现方式. Thread thread = new Thread(new Runnable(){ public void run( ...

  3. MySQL备份参数详解

    mysqldump 是采用SQL级别的备份机制,它将数据表导成 SQL 脚本文件,在不同的 MySQL 版本之间升级时相对比较合适,这也是最常用的备份方法. 1. --compatible = nam ...

  4. 整屏滚动效果 jquery.fullPage.js插件+CSS3实现

    最近很流行整屏滚动的效果,无论是在PC端还是移动端,本人也借机学习了一下,主要通过jquery.funnPage.js插件+CSS3实现效果. 本人做的效果: PC端:http://demo.qpdi ...

  5. RTL-SDR基础环境安装

    安装 cmake and libusb apt-get install cmake apt-get -dev 安装 RTL-SDR sudo apt-get install rtl-sdr kali已 ...

  6. Apple 移动设备绑定动态生成元素点击事件$(document).on('click',element,callback)失效解决方法

    今天在工作中刚接触到了微信社区相关的开发工作,测试的时候发现,动态生成元素的点击事件在andriod设备上可以触发,而在apple移动设备上却无法触发.好奇的我赶紧百度了下,很快就在stackover ...

  7. Hadoop安装教程

    单机.伪分布式:http://dblab.xmu.edu.cn/blog/install-hadoop/ 集群:http://dblab.xmu.edu.cn/blog/install-hadoop- ...

  8. sql 取2个日期之间的数据

    select * from table1 where larq between(to_date('2008-9-3','yyyy-mm-dd')) and (to_date('2008-9-5','y ...

  9. hdu_5788_Level Up(树状数组+主席树)

    题目链接:hdu_5788_Level Up 题意: 有一棵树,n个节点,每个节点有个能力值A[i],mid[i],mid的值为第i节点的子树的中位数(包括本身),现在让你将其中的一个节点的A值改为1 ...

  10. OpenCV常用函数分析

    1. 聚类:将拥有最相似属性的数据归为一类. K-means聚类: python调用格式:compacness, labels, centers = cv2.kmeans(data, K, crite ...