资源简介
基于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源码
相关资源
- 基于ARM的数字式万年历电子时钟QT开发
- 经典的基于ARM的uboot移植教程
-
Packt - em
bedded Linux Development Using Yo - ARMv6-M 体系架构参考手册
- Linux Firewalls Fourth Edition
- Linux服务器环境搭建及项目部署手册
- OPENCV函数手册(带目录)+OpenCV中文参
- sapjco3-linuxx86_64-3.0.14.tgz
- sapjco3-linuxintel-3.0.14.tgz
- opencv实现行人检测
- VC +opencv识别图像中图形显示于界面
- opencv运动物体检测
- LINUX设备驱动程序第三版(美)科波特
- Linux带命令壁纸可修改版
- 基于opencv 的图像局部放大
- 基于ARM的嵌入式温度控制系统的设计
- Opencv静态手势识别
- 双边滤波opencv实现
- 图像的平均亮度
- Opencv绘制物体轮廓,定位主要物件坐
-
OpenCV生成xm
l分类器文件 - ARM学习报告杜云海
- 《Linux内核设计与实现》第3版 英文文
- Linux操作系统原理 操作系统原理Linu
- x-waf-admin0.1-linux-amd64.tar.gz
- 基于ARM平台的嵌入式WEB服务器的设计
- Linux下QT及OpenCV搭建
- 精通嵌入式Linux编程第二版原书高清
- 张正友相机标定(OpenCV实现)223402
- Adaboost人头部检测 opencv vc
评论
共有 条评论