资源简介
基于Linux下opencv,用于车牌识别,环境为arm-linux,非VS环境,文章链接:https://blog.csdn.net/Guet_Kite/article/details/79702169
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace cv;
using namespace std;
//车牌宽高比为520/110=4.727272左右,误差不超过40%
//车牌高度范围在15~125之间,视摄像头距离而定(图像大小)
bool verifySizes_closeImg(const RotatedRect & candidate)
{
float error = 0.4;//误差40%
const float aspect = 4.7272;//44/14; //长宽比
int min = 15*aspect*15;//20*aspect*20; //面积下限,最小区域
int max = 125*aspect*125;//180*aspect*180; //面积上限,最大区域
float rmin = aspect - aspect*error; //考虑误差后的最小长宽比
float rmax = aspect + aspect*error; //考虑误差后的最大长宽比
int area = candidate.size.height * candidate.size.width;//计算面积
float r = (float)candidate.size.width/(float)candidate.size.height;//计算宽高比
if(r <1)
r = 1/r;
if( (area < min || area > max) || (r< rmin || r > rmax) )//满足条件才认为是车牌候选区域
return false;
else
return true;
}
void RgbConvToGray(const Mat& inputImageMat & outpuImage) //g = 0.3R+0.59G+0.11B
{
outpuImage = Mat(inputImage.rows inputImage.cols CV_8UC1);
for (int i = 0 ;i {
uchar *ptrGray = outpuImage.ptr(i);
const Vec3b * ptrRgb = inputImage.ptr(i);
for (int j = 0 ;j {
ptrGray[j] = 0.3*ptrRgb[j][2]+0.59*ptrRgb[j][1]+0.11*ptrRgb[j][0];
}
}
}
void normal_area(Mat &intputImg vector &rects_optimal vector & output_area )
{
float rangle;
for (int i = 0 ;i< rects_optimal.size() ; ++i)
{
//旋转区域
angle = rects_optimal[i].angle;
r = (float)rects_optimal[i].size.width / (float) (float)rects_optimal[i].size.height;
if(r<1)
angle = 90 + angle;//旋转图像使其得到长大于高度图像。
Mat rotmat = getRotationMatrix2D(rects_optimal[i].center angle1);//获得变形矩阵对象
Mat img_rotated;
warpAffine(intputImg img_rotatedrotmat intputImg.size()CV_INTER_CUBIC);
imwrite(“car_rotated.jpg“img_rotated);//得到旋转图像
//裁剪图像
Size rect_size = rects_optimal[i].size;
if(r<1)
swap(rect_size.width rect_size.height); //交换高和宽
Mat img_crop;
getRectSubPix(img_rotated rect_sizerects_optimal[i].center img_crop );//图像切割
//用光照直方图调整所有裁剪得到的图像,使具有相同宽度和高度,适用于训练和分类
Mat resultResized;
//别人写的:
/*resultResized.create(33144CV32FC1);
resize(img_crop resultResizedresultResized.size() 00INTER_CUBIC);
resultResized.convertTo(resultResized CV32FC1);
resultResized = resultResized.reshape(11);*/
resultResized.create(33144CV_8UC3);//CV32FC1????
resize(img_crop resultResizedresultResized.size() 00INTER_CUBIC);
Mat grayResult;
RgbConvToGra 属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 795336 2018-03-21 13:28 car_number\ann_xm
文件 61946 2018-03-21 13:28 car_number\ann_xm
文件 31900 2018-03-14 12:51 car_number\car.jpg
文件 20409 2019-01-21 00:08 car_number\main.cpp
文件 4139007 2017-03-21 16:01 car_number\SVM.xm
目录 0 2019-01-21 00:08 car_number
----------- --------- ---------- ----- ----
5048598 6
- 上一篇:source insight4.0破解版
- 下一篇:yaffs2源码
相关资源
- IAR For ARM 7.3最新注册机
- 郭天祥ARM9视频教程
- IAR ARM 7.8破解
- IAR For ARM V5.5 注册机
- IAR for ARM 7.40 破解
- IAR For ARM 7.4 破解
- uboot到linux logo显示不间断 补丁
- UNIX/LINUX编程实践教程的源码
- Linux任务管理器
- linux应用层的华容道游戏源代码
- ubuntu9.10 可加载内核模块和字符设备驱
- arm触摸屏与LCD校准程序三点校准法
- MP3文件ID3v2ID3v2APEv2标签读取
- ARM嵌入式项目实战
- 操作系统实验——虚存管理实验
- 基于OpenCV的数字识别468815
- 使用opencv去掉二值化图像中黑色面积
- linux下的发包工具sendip
- 尚观培训linux许巍关于c 的笔记和讲义
- 尚观培训linux董亮老师关于数据结构的
- linux 线程池源码 c 版
- linux C 电梯程序练习
- linux下用多进程同步方法解决生产者
- 基于ARM蓝牙传输源程序
- Linux 操作系统实验(全)
- Linux From Scratch 中文手册
- USB 驱动 让电脑与arm进行通信
- linux 网络实验 ftp程序
- Linux命令大全离线版&在线版
- 操作系统共享内存实验
川公网安备 51152502000135号
评论
共有 条评论