資源簡介
基于Linux下opencv,用于車牌識別,環(huán)境為arm-linux,非VS環(huán)境,文章鏈接: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;?//面積下限,最小區(qū)域
????int?max?=?125*aspect*125;//180*aspect*180;??//面積上限,最大區(qū)域
????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??max)?||?(r?rmax)??)//滿足條件才認為是車牌候選區(qū)域
????????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????{
????????//旋轉(zhuǎn)區(qū)域
????????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;//旋轉(zhuǎn)圖像使其得到長大于高度圖像。
????????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);//得到旋轉(zhuǎn)圖像
????????//裁剪圖像
????????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?);//圖像切割
????????//用光照直方圖調(diào)整所有裁剪得到的圖像,使具有相同寬度和高度,適用于訓(xùn)練和分類
????????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源碼
評論
共有 條評論