opencv车牌区域提取(VS2019 c++)
主要实现对整张图片中.将车牌分割出来.
需要进行
- 转换为灰度值
- 阈值分割,去除部分区域
- 连通域分析
- 分割出车牌所在轮廓
#include<opencv2/opencv.hpp>
#include<iostream>
#include<opencv2/highgui/highgui_c.h>
#include<vector>
#include<cstdlib> using namespace cv;
using namespace std;
int main(int argc, char** argv)
{Mat image;image = imread("D://7.jpg"); //读取原图像imshow("原图像", image);Mat gray;cvtColor(image, gray, COLOR_BGR2GRAY); //转换为灰度图threshold(gray, gray, 151, 0, THRESH_TOZERO); //阈值分割,去除无关的内容,低于下限置0threshold(gray, gray, 255, 255, THRESH_TOZERO_INV); //高于上限置0Mat element = getStructuringElement(MORPH_RECT, Size(3, 3)); //形态学滤波 3*3的核morphologyEx(gray, gray, MORPH_CLOSE, element); //进行闭运算Mat stats, centroids; //连通域分析结果stats:对应各个轮廓的x,y,width,height和面积,centroids:中心点Mat labels = Mat::zeros(image.size(), CV_32S); //表示当前像素是第几个轮廓int num_label = connectedComponentsWithStats(gray, labels, stats, centroids, 8, 4); //连通域分析,num_label对于连通域个数for (int i = 0; i < num_label; i++) //筛选车牌所在连通域,去除其他区域{int area = stats.at<int>(i, CC_STAT_AREA); //当前连通域区域的面积int width = stats.at<int>(i, CC_STAT_WIDTH); //宽度int height = stats.at<int>(i, CC_STAT_HEIGHT); //高度//筛选出车牌所在区域的以外的区域,均不赋予彩色显示,并将其连通域区域的中心点去除//面积,宽度,高度的数值,根据实际车牌的尺寸,加上相机内参数等数据可获得,应保证范围适中;//不知各参数的,可通过原图进行估计if ((area < 6000) | (area > 10000) | (width < 100) | (width > 300) | (height < 20) | (height > 70)){centroids.at<Vec2d>(i, 0) = 0; //将车牌以外区域的中心点去除,即取消连通域标记continue;}}int w = image.cols; //原图像像素的列数int h = image.rows; //原图像像素的行数Mat ROI = Mat::ones(image.size(), image.type()); //车牌提取结果值定义为全黑for (int i = 1; i < num_label; i++) {Vec2d pt = centroids.at<Vec2d>(i, 0); //各轮廓的中心点int x = stats.at<int>(i, CC_STAT_LEFT); //各轮廓的左上角x坐标int y = stats.at<int>(i, CC_STAT_TOP); //各轮廓的左上角y坐标int width = stats.at<int>(i, CC_STAT_WIDTH); //各轮廓的宽度(x,y)点开始到右下角int height = stats.at<int>(i, CC_STAT_HEIGHT); //各轮廓的高度(x,y)点开始到右下角int area = stats.at<int>(i, CC_STAT_AREA); //各轮廓的面积(x,y)点开始到右下角if (pt[0] != 0) //车牌轮廓的中心点非0{cout << pt << endl; //打印坐标值//将车牌区域像素提取到ROI(结果图像)中//如车牌图像倾斜,可利用椭圆拟合函数,获得图像角度再进行计算后分割for (int xx = x; xx < x + width; xx++)for (int yy = y; yy < y + height; yy++)ROI.at<Vec3b>(yy, xx) = image.at<Vec3b>(yy, xx);}}imshow("车牌提取结果", ROI); //显示结果waitKey(0);return 0;
}
识别结果为:
opencv车牌区域提取(VS2019 c++)相关推荐
- 车牌区域提取(定位)综述及各种算法的优缺点
车牌区域提取通常也称为车牌区域定位,其目的是从含有车牌的图像中找到车牌区域. 车牌定位的重要性不言而喻,作为车牌识别的第一个步骤,车牌区域的提取成功与否是完成车牌识别的基础也是首要决定因素. 车牌区域 ...
- 利用颜色和形态学两种方法进行车牌区域提取的OpenCV代码
图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 2016-7-28日:用MSER算法也实现了车牌 ...
- 利用MSER算法提取图像区域(车牌区域)的OpenCV代码~
图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 我的博客中前面已经写了两种方法来实现车牌区域的提 ...
- opencv 九 提取车辆照片中的车牌区域(基于纹理特征)
一.算法需求 基于基于纹理特征提取车辆照片中的车牌区域 二.问题分析 在车辆照片中提取车牌区域,需要对图像进行系列变化,移除图像的非车牌区域,使车牌区域在图像中变得显著.目前分析发现,在车辆照片中,车 ...
- java opencv 提取车牌_opencv-车牌区域提取
#include "opencv2/highgui/highgui.hpp" #include "opencv2/features2d/features2d.hpp&qu ...
- [图像处理] Python+OpenCV实现车牌区域识别及Sobel算子
由于最近太忙,这篇文章只给出相关代码供大家学习,过一段时间会详细的写一些列Python图像处理的文章,包括各种算法原理.图像识别.图像增强.图像分类.深度学习等.本篇文章主要调用OpenCV库(cv2 ...
- python图像识别 车牌_[图像处理] Python+OpenCV实现车牌区域识别
点击上方蓝色字体,关注我们 15 本篇文章主要调用OpenCV库(cv2)进行车牌区域识别,具体步骤包括: 1.灰度转换:将彩色图片转换为灰度图像,常见的R=G=B=像素平均值. 2.高斯平滑和中值滤 ...
- OpenCV区域提取之利用Rect提取在源代码中预先定义好的区域
图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 直接上源码和运行结果吧,程序很好读懂,我就不多作 ...
- 实战解惑 | OpenCV中如何提取不规则ROI区域
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 什么是ROI ROI是英文Region Of Interest的三 ...
最新文章
- java中 int 比较_java中Integer与int的种种比较你知道多少?
- 前端学习(583):在console中访问节点
- python selenium 环境_配置Python Selenium环境
- 一文详解LDA主题模型
- 医疗搜索中的query词权重算法探索
- java开发常用的工具类_java开发常用工具类
- 《设计模式》读懂UML类图
- Docker 安装与操作 Mysql 数据库快速入门
- CDA I级学习 - CDA I级考试大纲
- 创业感悟:低调务实是创业者最可贵的精神
- 在手机上Link of class 'Lcom/example/test/MainActivity;' failed
- ​手把手教你做个AR涂涂乐 ​
- Okra框架(二) 搭建Socket服务器
- ​万邦医药在创业板过会:上半年收入约1亿元,陶春蕾母子为实控人​
- juniper:SRX-产品简介
- 量化交易中,如何快速把股票代码转换成Int整形?
- Dom——仿淘宝关闭二维码
- 【Scala】学习笔记三——面向对象
- Android开发书籍推荐:从入门到精通系列学习路线书籍介绍
- 系统对比下FinClip 与 mPaaS
热门文章
- VS C1001错误可能的解决方案
- 关于python深copy与浅copy的一点理解
- 凸优化第五章对偶 5.1 Lagrange对偶函数
- 微信小游戏-CocosCreator 基础(一)
- 李宏毅老师2022机器学习课程笔记 02 卷积神经网络(CNN)
- UPC Participate in E-sports(参加电子竞技)(Biginteger的平方根:二分或牛顿迭代法)
- 【Python简明教程十二】Python元组
- 海量数据和高并发解决方案
- 关于TI账号注册卡在机器人验证那一步
- java 浏览器访问图片不显示_[Java教程]重新上传图片后 地址不变 浏览器加载不到的问题...