当前位置:   article > 正文

opencv车牌定位与提取(vs2019 & c++)_opencv 车牌 灰度图像 省份简称 下载

opencv 车牌 灰度图像 省份简称 下载

车牌特征提取的思路:

(1)首先我们来看车牌部分与其他部分的区别,及车牌的特征,整体的车牌定位及提取方案即时基于此(基于灰度图像中考虑):

a.车牌部分是矩形

b.车牌具有特定的长宽比;

c.车牌的面积一定

(2)接着我们对整幅图片进行预处理(车牌特征提取思路,实际代码部分可能为了更好的显示效果会稍加修改)

a.图像转为灰度图,便于处理

b.图像进行平滑滤波,可以去除一定不必要细节噪声,桥接连线缝隙,主要是针对车牌矩形框,方便后面步骤中计算车牌一阶竖直梯度的效果

c,计算图像一阶竖直梯度,因为可以看到整幅图像中具有竖直线条特征的部分,除了车牌两边框外,车头部分很少有比较大块的竖直纹理的区域,这样我们就去除了许多水平方向的特征(细节),保留了竖直方向纹理的细节
d.选取合适阈值参数来进行阈值化处理

e.形态学闭操作,先膨胀后腐蚀的过程称为闭运算。它具有填充物体内细小空洞,连接邻近物体和平滑边界的作用。
 

  1. #include<opencv2/opencv.hpp>
  2. #include<iostream>
  3. #include<opencv2/highgui/highgui.hpp>
  4. #include<vector>
  5. #include<cstdlib>
  6. using namespace cv;
  7. using namespace std;
  8. #define WINDOW_NAME "Plate recognize"
  9. //-----------------------------------【全局变量声明部分】--------------------------------------
  10. // 描述:全局变量声明
  11. //-----------------------------------------------------------------------------------------------
  12. int blockSize = 5;
  13. int constValue;
  14. Mat gaussianFilImg, sobelImg;
  15. Mat threshImg, closeImg;
  16. int g_nElementShape = MORPH_RECT;//元素结构的形状
  17. //变量接收的TrackBar位置参数
  18. int g_nMaxIterationNum = 10;
  19. int g_nOpenCloseNum = 0;
  20. //-----------------------------------【全局函数声明部分】--------------------------------------
  21. Mat sobeproc(const Mat& src);
  22. static void on_OpenClose(int, void*);//闭运算回调函数
  23. //-----------------------------------【滑动条constValue回调】--------------------------------------
  24. void on_Trackbar(int, void*)
  25. {
  26. adaptiveThreshold(sobelImg, threshImg, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY_INV, blockSize, constValue);
  27. imshow(WINDOW_NAME, threshImg);
  28. }
  29. int main()
  30. {
  31. Mat plate = imread("D://7.jpg", 0);
  32. if (!plate.data) { cout << "error in read image please check it\n"; return false; }
  33. GaussianBlur(plate, gaussianFilImg, Size(5, 5), 0, 0);
  34. sobelImg = sobeproc(gaussianFilImg);
  35. //adaptiveThreshold(sobelImg, threshImg, 255, CV_ADAPTIVE_THRESH_MEAN_C, CV_THRESH_BINARY_INV, blockSize, constValue);
  36. constValue = 10;//自适应阈值化参数
  37. g_nOpenCloseNum = 9;//闭运算参数
  38. namedWindow(WINDOW_NAME, 1);
  39. createTrackbar("threshold", WINDOW_NAME, &constValue, 100, on_Trackbar);
  40. createTrackbar("迭代值", WINDOW_NAME, &g_nOpenCloseNum, g_nMaxIterationNum * 10 + 1, on_OpenClose);
  41. //执行回调函数
  42. on_Trackbar(constValue, 0);
  43. on_OpenClose(g_nOpenCloseNum, 0);
  44. while (1)
  45. {
  46. int c = waitKey(0);
  47. if ((char)c == ' ')
  48. {
  49. vector<vector<Point>>contours;
  50. findContours(threshImg, contours, RETR_EXTERNAL, CHAIN_APPROX_NONE);
  51. drawContours(threshImg, contours, -1, Scalar(26, 24, 46), 3);
  52. }
  53. break;
  54. }
  55. waitKey();
  56. return 0;
  57. }
  58. //sobel算子求得一阶水平方向导数,以此求垂直边缘
  59. Mat sobeproc(const Mat& src)
  60. {
  61. Mat dst;
  62. Mat grad_x, grad_y, abs_grad_x, abs_grad_y;
  63. Sobel(src, grad_x, CV_8U, 1, 0, 3, 1, 1, BORDER_DEFAULT);
  64. convertScaleAbs(grad_x, abs_grad_x);
  65. Sobel(src, grad_y, CV_8U, 0, 1, 3, 1, 1, BORDER_DEFAULT);
  66. convertScaleAbs(grad_y, abs_grad_y);
  67. addWeighted(abs_grad_x, 0.6, abs_grad_y, 0.4, 0, dst);
  68. return dst;
  69. }
  70. //-----------------------------------【on_OpenClose( )函数】----------------------------------
  71. // 描述:【开运算/闭运算】窗口的回调函数
  72. //-----------------------------------------------------------------------------------------------
  73. static void on_OpenClose(int, void*)
  74. {
  75. //偏移量的定义
  76. int offset = g_nOpenCloseNum - g_nMaxIterationNum;//偏移量
  77. int Absolute_offset = offset > 0 ? offset : -offset;//偏移量绝对值
  78. //自定义核
  79. Mat element = getStructuringElement(g_nElementShape, Size(Absolute_offset * 2 + 1,
  80. Absolute_offset * 2 + 1), Point(Absolute_offset, Absolute_offset));
  81. if (offset < 0)
  82. morphologyEx(threshImg, closeImg, MORPH_OPEN, element);
  83. else
  84. morphologyEx(threshImg, closeImg, MORPH_CLOSE, element);
  85. imshow(WINDOW_NAME, closeImg);
  86. }

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号