91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 26.05MB
    文件類型: .zip
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2023-07-07
  • 語言: 其他
  • 標簽: opencv??數字識別??

資源簡介

通過opencv對圖片上的數字進行識別。識別方式和步驟主要是尋找出數字的外輪廓,然后根據輪廓外接矩陣對數字進行分割,然后根據模板,求出其與分割好的數字的像素差值,找出最匹配的數字。

資源截圖

代碼片段和文件信息

#define?_CRT_SECURE_NO_WARNINGS
#include?
#include?

using?namespace?std;
using?namespace?cv;

class?myRect
{
public:
myRect(){}
~myRect(){}
myRect(Rect?&temp):myRc(temp){}
//比較矩形左上角的橫坐標,以便排序
bool?operator<(myRect?&rect)
{
if?(this->myRc.x? {
return?true;
}
else
{
return?false;
}
}
//重載賦值運算符
myRect?operator=(myRect?&rect)
{
this->myRc?=?rect.myRc;
return?*this;
}
//獲取矩形
Rect?getRect()
{
return?myRc;
}
private:
Rect?myRc;//存放矩形
};

//求圖片的像素和
int?getPiexSum(Mat?&image)
{
int?sum?=?0;
for?(int?i?=?0;?i? {
for?(int?j?=?0;?j? {
sum?+=?image.at(j?i);
}
}
return?sum;
}

/*主函數*/
int?main()
{
//輸入要識別的圖片,并顯示
Mat?srcImage?=?imread(“number.jpg“);
imshow(“原圖“?srcImage);
//對圖像進行處理,轉化為灰度圖然后再轉為二值圖
Mat?grayImage;
cvtColor(srcImage?grayImage?COLOR_BGR2GRAY);
Mat?binImage;
//第4個參數為CV_THRESH_BINARY_INV是因為我的輸入原圖為白底黑字
//若為黑底白字則選擇CV_THRESH_BINARY即可
threshold(grayImage?binImage?100?255?CV_THRESH_BINARY_INV);

//尋找輪廓,必須指定為尋找外部輪廓,不然一個數字可能有多個輪廓組成,比如4689等數字
Mat?conImage?=?Mat::zeros(binImage.size()?binImage.type());
vector>?contours;
vector?hierarchy;
//指定CV_RETR_EXTERNAL尋找數字的外輪廓
findContours(binImage?contours?hierarchy?CV_RETR_EXTERNAL?CV_CHAIN_APPROX_NONE);
//繪制輪廓
drawContours(conImage?contours?-1?255);

//將每個數字,分離開,保存到容器中
vector?sort_rect;
for?(int?i?=?0;?i? {
//boundingRect返回輪廓的外接矩陣
Rect?tempRect?=?boundingRect(contours[i]);
sort_rect.push_back(tempRect);
}

//對矩形進行排序,因為輪廓的順序不一定是數字真正的順序
for?(int??i?=?0;?i? {
for?(int?j?=?i?+?1;?j? {
if?(sort_rect[j]? {
myRect?temp?=?sort_rect[j];
sort_rect[j]?=?sort_rect[i];
sort_rect[i]?=?temp;
}
}
}


/*加載模板,若沒有則需自己新建一個*/

//新建運行一次就好,不過制作模板的材料為0-9十個數字的圖像
//for?(int?i?=?0;?i? //{
// Mat?ROI?=?conImage(sort_rect[i].getRect());
// Mat?dstROI;
// resize(ROI?dstROI?Size(40?50)0?0?INTER_NEAREST);
// char?name[64];
// sprintf(name?“C:/Users/Administrator/Desktop/number_recognition/number_recognition/image/%d.jpg“?i);
// //imshow(str?dstROI);
// imwrite(name?dstROI);
//}

//加載模板
vector?myTemplate;
for?(int?i?=?0;?i? {
char?name[64];
sprintf(name?“C:/Users/Administrator/Desktop/number_recognition/number_recognition/image/%d.jpg“?i);
Mat?temp?=?imread(name?0);
myTemplate.push_back(temp);
}

//按順序取出和分割數字
vector?myROI;
for?(int?i?=?0;?i? {
Mat?ROI;
ROI?=?conImage(sort_rect[i].getRect());
Mat?dstROI?=?Mat::zeros(myTemplate[0].size()myTemplate[0].type());
resize(ROI?dstROI?myTemplate[0].size()?0?0?INTER_NEAREST);
myROI.push_back(dstROI);
}

//進行比較將圖片與模板相減,然后求全部像素和,和最小表示越相似

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-09-10?19:45??number_recognition\
?????目錄???????????0??2018-09-10?19:28??number_recognition\.vs\
?????目錄???????????0??2018-09-10?19:28??number_recognition\.vs\number_recognition\
?????目錄???????????0??2018-09-12?15:27??number_recognition\.vs\number_recognition\v15\
?????文件???????34816??2018-09-12?15:27??number_recognition\.vs\number_recognition\v15\.suo
?????文件????22282240??2018-09-12?15:27??number_recognition\.vs\number_recognition\v15\Browse.VC.db
?????目錄???????????0??2018-09-10?19:29??number_recognition\.vs\number_recognition\v15\ipch\
?????目錄???????????0??2018-09-10?19:29??number_recognition\.vs\number_recognition\v15\ipch\AutoPCH\
?????目錄???????????0??2018-09-11?10:47??number_recognition\.vs\number_recognition\v15\ipch\AutoPCH\c2870fb4b32c1cb\
?????文件????99549184??2018-09-12?09:26??number_recognition\.vs\number_recognition\v15\ipch\AutoPCH\c2870fb4b32c1cb\MAIN.ipch
?????目錄???????????0??2018-09-12?15:20??number_recognition\number_recognition\
?????目錄???????????0??2018-09-11?10:52??number_recognition\number_recognition\image\
?????文件????????1445??2018-09-12?10:26??number_recognition\number_recognition\image\0.jpg
?????文件????????1178??2018-09-12?10:26??number_recognition\number_recognition\image\1.jpg
?????文件????????1874??2018-09-12?10:26??number_recognition\number_recognition\image\2.jpg
?????文件????????1993??2018-09-12?10:26??number_recognition\number_recognition\image\3.jpg
?????文件????????1139??2018-09-12?10:26??number_recognition\number_recognition\image\4.jpg
?????文件????????1906??2018-09-12?10:26??number_recognition\number_recognition\image\5.jpg
?????文件????????1790??2018-09-12?10:26??number_recognition\number_recognition\image\6.jpg
?????文件????????1388??2018-09-12?10:26??number_recognition\number_recognition\image\7.jpg
?????文件????????1745??2018-09-12?10:26??number_recognition\number_recognition\image\8.jpg
?????文件????????1851??2018-09-12?10:26??number_recognition\number_recognition\image\9.jpg
?????文件????????3919??2018-09-12?15:20??number_recognition\number_recognition\main.cpp
?????文件????????5624??2018-09-10?19:14??number_recognition\number_recognition\number.jpg
?????文件???????13038??2018-09-11?10:54??number_recognition\number_recognition\number2.jpg
?????文件????????8100??2018-09-12?10:29??number_recognition\number_recognition\number3.jpg
?????文件????????5955??2018-09-10?19:45??number_recognition\number_recognition\number_recognition.vcxproj
?????文件?????????949??2018-09-10?19:45??number_recognition\number_recognition\number_recognition.vcxproj.filters
?????文件?????????165??2018-09-10?19:28??number_recognition\number_recognition\number_recognition.vcxproj.user
?????文件???????16541??2018-09-12?10:18??number_recognition\number_recognition\template.jpg
?????目錄???????????0??2018-09-10?19:45??number_recognition\number_recognition\x64\
............此處省略19個文件信息

評論

共有 條評論