婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 如何基于opencv實現簡單的數字識別

如何基于opencv實現簡單的數字識別

熱門標簽:佛山防封外呼系統收費 南昌辦理400電話怎么安裝 電話機器人適用業務 獲客智能電銷機器人 哈爾濱外呼系統代理商 徐州天音防封電銷卡 湛江電銷防封卡 不錯的400電話辦理 鄭州智能外呼系統運營商

前言

由于自己學識尚淺,不能用python深度學習來識別這里的數字,所以就完全采用opencv來識別數字,然后在這里分享、記錄一下自己在學習過程中的一些所見所得和所想

要解決的問題

這是一個要識別的數字,我這里首先是對圖像進行一個ROI的提取,提取結果就僅僅剩下數字,把其他的一些無關緊要的要素排除在外,

這是ROI圖片,我們要做的就是識別出該照片中的數字,

解決問題的思路

1、先把這個圖片中的數字分割,分割成為5張小圖片,每張圖片包含一個數字,為啥要分割呢?因為我們沒辦法讓計算機知道這個數字是多少,所以只能根據特征,讓計算機去識別特征,然后每一個特征對應一個值,首先貼出分割圖片的程序,然后在程序下方會有一段思路解釋

#include opencv2/core/core.hpp>
#include opencv.hpp>
#include opencv2/highgui/highgui.hpp>
#include opencv2/features2d/features2d.hpp>
#include opencv2/imgproc/imgproc.hpp>
#include iostream>
#include ctime>
using namespace std ;
using namespace cv;
#include map>
Mat src_threshold;
Mat src_dil;
int sunImage(Mat image);
vectorMat>ROI_image;//待測圖片
int main() 
{
	clock_t start ,finish;
	start=clock();
	Mat src;
	src=imread("D:\\vspic\\picture\\number6.jpg");
	resize(src,src,Size(src.cols/7,src.rows/7));
	imshow("src",src);
	Mat src_gray;
	cvtColor(src,src_gray,COLOR_BGR2GRAY);
	//imshow("gsrc_ray",src_gray);
	Mat src_blur;
	blur(src_gray,src_blur,Size(9,9));
	//GaussianBlur(src_gray,src_blur,Size(11,11),1,1);
	Mat src_threshold;
	threshold(src_blur,src_threshold,150,255,THRESH_OTSU);
	//imshow("src_threshold",src_threshold);
	Mat src_canny;
	Canny(src_threshold,src_canny,125,255,3);
	//imshow("src_canny",src_canny);
	vectorvectorPoint>>contours_src;
	vectorVec4i>hierarchy_src(contours_src.size());
	findContours(src_canny,contours_src,hierarchy_src,RETR_EXTERNAL,CHAIN_APPROX_NONE);
	Rect rect_s;
	Rect choose_rect;
	for (size_t i=0;icontours_src.size();i++)
	{
		rect_s=boundingRect(contours_src[i]);
		double width=rect_s.width;
		double height= rect_s.height;
		double bizhi=width/height;
		if (bizhi>1.5height>50)
		{
			/*rectangle(src,rect_s.tl(),rect_s.br(),Scalar(255,255,255),1,1,0);*/
			choose_rect=Rect(rect_s.x+20,rect_s.y+30,rect_s.x-30,rect_s.y-108);
		}
	}
	Mat roi;
	roi=src(choose_rect);
	//imshow("src_",roi);
	Mat img =roi;
	Mat gray_img;
	// 生成灰度圖像
	cvtColor(img, gray_img, CV_BGR2GRAY);
	// 高斯模糊
	Mat img_gau;
	GaussianBlur(gray_img, img_gau, Size(3, 3), 0, 0);
	// 閾值分割
	Mat img_seg;
	threshold(img_gau, img_seg, 0, 255, THRESH_BINARY + THRESH_OTSU);
	Mat element;
	element=getStructuringElement(MORPH_RECT,Size(8,8));
	erode(img_seg,src_dil,element);
	//imshow("src_dil",src_dil);
	// 邊緣檢測,提取輪廓
	Mat img_canny;
	Canny(src_dil, img_canny, 200, 100);
	//imshow("canny",img_canny);
	vectorvectorPoint>> contours;
	vectorVec4i> hierarchy(contours.size());
	findContours(img_canny, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE, Point());//尋找輪廓
	int size = (int)(contours.size());//輪廓的數量
	//coutsizeendl;6個
	// 保存符號邊框的序號
	vectorint> num_order;//定義一個整型int容器
	mapint, int> num_map;//容器,需要關鍵字和模板對象兩個模板參數,此處定義一個int作為索引,并擁有相關連的指向int的指針
	for (int i = 0; i  size; i++)
   {
		// 獲取邊框數據
		Rect number_rect = boundingRect(contours[i]);
		int width = number_rect.width;//獲取矩形的寬
		int height = number_rect.height;//獲取矩形的高
		// 去除較小的干擾邊框,篩選出合適的區域
		if (width > img.cols/20 )
		{
			rectangle(img,number_rect.tl(),number_rect.br(),Scalar(255,255,255),1,1,0);//繪制矩形
			imshow("img",img);//顯示矩形框
			num_order.push_back(number_rect.x);//把矩形的x坐標放入number_order容器中,將一個新的元素添加到vector的最后面,
			//位置為當前元素的下一個元素
			num_map[number_rect.x] = i;//向map中存入鍵值對,number_rect.x是關鍵字,i是值
			/*把矩形框的x坐標與對應的i值一起放入map容器中,形成一一對應的鍵值對
			*/
		}
	}
	// 按符號順序提取
	sort(num_order.begin(), num_order.end());/*把number_order容器中的內容按照從小到大的順序排列,這里面是X的坐標*/
	for (int i = 0; i  num_order.size(); i++) {
		Rect number_rect = boundingRect(contours[num_map.find(num_order[i])->second]);//num_order里面放的是坐標
		//cout"num_map的值是:"num_map.find(num_order[i])->secondendl;
		Rect choose_rect(number_rect.x, 0, number_rect.width, img.rows);//矩形左上角x,y的坐標以及矩形的寬和高
		Mat number_img = img(choose_rect);
		resize(number_img,number_img,Size(30,100));//歸一化尺寸
		ROI_image.push_back(number_img);//保存為待測圖片
		//imshow("number" + to_string(i), number_img);
		char name[50];
		sprintf_s(name,"D:\\vs2012\\model\\%d.jpg",i);//保存模板
		imwrite(name, number_img);	
	}
	cout"圖片分割完畢"endl;
	//加載模板
	vectorMat>temptImage;//存放模板
	for (int i=0;i4;i++)
	{
		char name[50];
		sprintf_s(name,"D:\\vs2012\\model\\%d.jpg",i);
		Mat temp;
		temp=imread(name);
		//cout"加載模板圖片通道數:"temp.channels()endl;
		temptImage.push_back(temp);
	}
	vectorint>seq;//存放順序結果
	for (int i=0;iROI_image.size();i++)
	{
		Mat subImage;
		int sum=0;
		int min=50000;
		int seq_min=0;//記錄最小的和對應的數字
		for (int j=0;j4;j++)
		{
			absdiff(ROI_image[i],temptImage[j],subImage);//待測圖片像素減去模板圖片像素
			sum=sunImage(subImage);//統計像素和
			if (summin)
			{
				min=sum;
			    seq_min=j;
			}
			sum=0;
		}
		seq.push_back(seq_min);
	}
	cout"輸出數字匹配結果:";//endl是換行的意思
	for (int i=0;iseq.size();i++)//輸出結果,小數點固定在第3位
	{
		coutseq[i];
		if (i==1)
		{
			cout".";
		}
	}
	finish=clock();
	double all_time=double(finish-start)/CLOCKS_PER_SEC;
	/*cout"運行總時間是:"all_timeendl;*/
	waitKey(0);
	return 0;
}
//計算像素和
int sunImage(Mat image)
{
	int sum=0;
	for (int i=0;iimage.cols;i++)
	{
		for (int j=0;jimage.rows;j++)
		{
			sum+=image.atuchar>(j,i);
		}
	}
	return sum;
}

整體思路是這樣子的:0-9這10個數字也都是已經被分割好的,并且保存好了,也就是模板,然后我們把待測的圖片也分割掉,然后從0-9模板文件夾中去讀取模板圖片,讓待測的分割完畢的圖片去和10個模板逐個相減,然后去統計他們相減后的像素和,如果這個在這10個中最低,那么他們就是同一個數字,然后輸出值就可以了,分割后的大概是這樣

上邊是第一種方法,然后還有第二種,是穿針引線的方法,是根據晶體管數字特征來識別的

這是晶體管數字的特征,每個0-9每個數字都是不一樣的,我們下一篇文章再做詳細的介紹

總結

到此這篇關于如何基于opencv實現簡單的數字識別的文章就介紹到這了,更多相關opencv實現數字識別內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python opencv實現信用卡的數字識別
  • Python+Opencv實現數字識別的示例代碼
  • python基于OpenCV模板匹配識別圖片中的數字
  • 詳解Python OpenCV數字識別案例

標簽:呂梁 蕪湖 紹興 蘭州 吉安 懷化 安康 廣西

巨人網絡通訊聲明:本文標題《如何基于opencv實現簡單的數字識別》,本文關鍵詞  如何,基于,opencv,實現,簡單,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《如何基于opencv實現簡單的數字識別》相關的同類信息!
  • 本頁收集關于如何基于opencv實現簡單的數字識別的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美一区二区播放| 99精品国产99久久久久久白柏| 99国产精品久久久久久久久久| 三级在线观看一区二区| 综合分类小说区另类春色亚洲小说欧美| 色婷婷激情一区二区三区| 中文字幕第一区综合| 亚洲一区二区三区小说| 精品国产乱码久久久久久牛牛 | 亚洲成a人在线观看| 亚洲一区二区视频在线观看| 欧美国产激情一区二区三区蜜月| 日韩欧美国产综合| 欧美成人一区二区三区在线观看| 在线观看中文字幕不卡| 日本韩国精品在线| 色婷婷久久久亚洲一区二区三区| 在线免费一区三区| 91麻豆精品国产无毒不卡在线观看| 色8久久人人97超碰香蕉987| 91麻豆123| 51精品秘密在线观看| 欧美成人官网二区| 中文成人av在线| 五月婷婷色综合| 北条麻妃国产九九精品视频| 99re成人在线| 欧美视频中文字幕| 日韩丝袜情趣美女图片| 国产精品私人影院| 偷窥少妇高潮呻吟av久久免费| 另类小说综合欧美亚洲| 一本一道久久a久久精品| youjizz久久| 欧美日韩国产bt| 日韩一区欧美小说| 粉嫩av一区二区三区在线播放 | 最新日韩在线视频| 老司机精品视频导航| 欧美性极品少妇| 午夜伊人狠狠久久| 91片在线免费观看| 国产精品久久久久aaaa樱花| 九九国产精品视频| 2023国产一二三区日本精品2022| 日韩国产精品大片| 制服丝袜国产精品| 蜜桃av一区二区在线观看| 欧美性欧美巨大黑白大战| 国产精品久久久久久户外露出| 久久激情综合网| 亚洲午夜激情av| 国产精品一区久久久久| 欧美电影免费观看高清完整版在线 | 丝袜美腿一区二区三区| 99精品欧美一区| 日韩电影免费在线看| 日韩一区二区麻豆国产| 韩国精品在线观看| **欧美大码日韩| 欧美一级精品大片| 国产成人自拍网| 午夜伦欧美伦电影理论片| 欧美白人最猛性xxxxx69交| 国产精品资源在线| 亚洲一区免费在线观看| 51精品久久久久久久蜜臀| 风流少妇一区二区| 日韩精品电影在线| 国产精品黄色在线观看| 日韩欧美123| 欧美视频一二三区| 成人丝袜视频网| 午夜a成v人精品| 亚洲一区二区三区三| 国产日韩在线不卡| 日韩欧美国产综合一区| 欧美网站大全在线观看| a4yy欧美一区二区三区| 日本成人在线不卡视频| 亚洲天堂福利av| 国产精品国产三级国产普通话三级 | 亚洲一区精品在线| 国产日韩欧美精品电影三级在线| 日韩三级免费观看| 日韩西西人体444www| 欧美日韩在线综合| 99re亚洲国产精品| gogogo免费视频观看亚洲一| 国产老肥熟一区二区三区| 日韩电影在线免费| 日本亚洲视频在线| 精品一区二区在线播放| 色综合视频一区二区三区高清| 综合自拍亚洲综合图不卡区| 国产农村妇女毛片精品久久麻豆 | 久久老女人爱爱| 久久理论电影网| 一区二区三区四区国产精品| 午夜精品福利一区二区三区蜜桃| 五月婷婷综合在线| 国产激情一区二区三区四区| 91在线高清观看| 欧美日韩一区二区三区四区| 日韩一级片在线播放| 中文字幕成人网| 最好看的中文字幕久久| 日韩黄色在线观看| 成人av在线播放网站| 日韩一区二区三| 一区二区免费在线播放| 国产一区二区三区免费看| 欧美日韩高清不卡| 国产欧美1区2区3区| 日本一不卡视频| 欧美日韩不卡在线| 亚洲精选免费视频| 国产精品一区二区不卡| 欧美一级国产精品| 五月激情六月综合| 在线观看不卡一区| 亚洲蜜桃精久久久久久久| 久久精品久久精品| 欧美日韩一区三区四区| 亚洲一区国产视频| 精品污污网站免费看| 亚洲欧美日韩在线| 色综合天天综合网天天看片| 最新热久久免费视频| 成人av在线资源网站| 久久九九国产精品| 懂色一区二区三区免费观看| 欧美电视剧在线看免费| 美国十次了思思久久精品导航| 日韩视频免费观看高清完整版| 日本v片在线高清不卡在线观看| 欧美一级高清大全免费观看| 亚洲福利电影网| 欧美精品一区在线观看| av福利精品导航| 亚洲最新视频在线观看| 欧美一级久久久久久久大片| 国产白丝网站精品污在线入口| 专区另类欧美日韩| 日韩欧美国产一区二区在线播放 | 亚洲精品一区二区三区影院| 国产麻豆一精品一av一免费| 一区二区三区高清不卡| 中文字幕精品—区二区四季| 欧美一卡二卡三卡| 国产成人免费视频| 麻豆精品一区二区三区| 亚洲欧美成人一区二区三区| 国产亚洲va综合人人澡精品| 这里只有精品99re| 欧美日韩一区二区三区四区| 色综合久久66| 欧美日韩一区二区三区不卡| 95精品视频在线| 蜜桃av一区二区三区| 欧美a一区二区| 亚洲成人av免费| 日韩**一区毛片| 毛片基地黄久久久久久天堂| 一二三四社区欧美黄| 亚洲h精品动漫在线观看| 亚洲欧洲99久久| 日本一区二区不卡视频| 久久久久久久久99精品| 国产调教视频一区| 久久久久久久综合色一本| 精品国产伦一区二区三区观看体验| 日韩一区二区精品在线观看| 精品视频123区在线观看| 欧美三区在线观看| 欧美乱妇15p| 26uuu国产一区二区三区| 亚洲精品一区二区三区99| 国产日韩成人精品| 亚洲精选视频免费看| 蜜臀av性久久久久蜜臀av麻豆| 国产一区二区美女| 欧美亚洲国产一卡| 欧美激情在线观看视频免费| 亚洲精品菠萝久久久久久久| 免费看日韩a级影片| jlzzjlzz亚洲女人18| 91麻豆精品国产91久久久| 国产精品国产三级国产普通话蜜臀| 五月天网站亚洲| 91视频一区二区三区| 国产亚洲欧洲997久久综合 | 成人午夜精品在线| 日韩欧美成人一区二区| 亚洲线精品一区二区三区八戒| 国产真实乱对白精彩久久| 69p69国产精品| 奇米888四色在线精品| 欧美性大战久久久久久久蜜臀| 日本一区二区在线不卡|