清晰度检测照片算法
清晰度檢測照片算法
功能:可以從一個指定的文件夾中讀取照片,然后轉為灰度圖像等處理,然后把處理的虹膜圖像進行分類,清晰的圖像存儲在一個文件夾中,不清晰的虹膜圖像也存在一個文件夾中,文件夾中圖像的下標從1開始遞增,也可以自己修改代碼吧原始圖像的編號原封不動的進行保存。
連續讀取照片(下標連續!)和保存連續多張照片(自己寫的代碼效果是連續的!)
代碼如下:
#include <highgui/highgui.hpp> #include <imgproc/imgproc.hpp>#include <iostream> #include <string> #include<iostream> #include <sstream> using namespace std; using namespace cv;int main() { //定義轉化后的圖像Mat imageGrey; char buffer[6000]; //左右眼虹膜圖像 各3000 定義大一點int m=1;int n=1;for(int i=1;i<3000;i++){sprintf(buffer,"E:\\zqx\\L\\%d.bmp",i); //u盤中的一個文件夾Mat imageSource=imread(buffer); //轉灰度圖像處理cvtColor(imageSource, imageGrey, CV_RGB2GRAY); //轉化成灰度圖像Mat imageSobel; //soble算子Laplacian(imageGrey, imageSobel, CV_16U); //把灰度圖像 拉普拉斯操作后 圖像名字為imagesoble 為了避免數據溢出 圖像深度為CV_16U//圖像的平均灰度double meanValue = 0.0;meanValue = mean(imageSobel)[0]; //imagesoble圖像 的平均灰度為0 //定義字符流 輸出字符stringstream meanValueStream;string meanValueString;meanValueStream << meanValue;meanValueStream >> meanValueString;meanValueString = "Articulation(Laplacian Method): " + meanValueString;if(meanValue<2.4) //自己可以定義閾值{printf("圖像不合格,太模糊");printf("\n");putText(imageSource, meanValueString, Point(20, 50), CV_FONT_HERSHEY_COMPLEX, 0.8, Scalar(255, 255, 25), 2);imshow("不合格的圖像", imageSource);waitKey(50);stringstream ss;ss<<m;string savepath="C:\\不合格的圖像\\"+ss.str()+".bmp";imwrite(savepath,imageSource);m++;}else{printf("圖像合格 ");printf("\n");//各參數依次是:照片/添加的文字/左上角坐標/字體/字體大小/顏色/字體粗細 Scalar(255, 255, 255)是白色字體 Scalar(0,0, 0)是黑色字體 順序b g r cv.color是 r g b順序 //putText(imageSource, meanValueString, Point(20, 50), CV_FONT_HERSHEY_COMPLEX, 0.8, Scalar(255, 255, 25), 2);imshow("合格的圖像", imageSource);waitKey(50);stringstream ss;ss<<n;string savepath="C:\\合格的圖像\\"+ss.str()+".bmp";imwrite(savepath,imageSource);n++;}}return 0; }測試我就不貼上去了,不好截屏。 效果就是兩個新建的文件夾下都有圖片,合格和不合格的照片,下標都是從1開始遞增。注釋也比較全,比較好理解。
e盤的虹膜庫 左右眼各3000張:
然后運行代碼,效果如下圖:
然后查看,自己新建的文件夾中圖像的保存情況!:
結果成功!清晰度檢測是虹膜檢測的第一步,用算法程序幫自己篩選清晰度不合格的圖像!然后不合格的圖像上自己可以加一句話告訴別人這個圖像的清晰度多少,而合格的圖像,只是清晰度達到了要求,里面也有一些斜眼閉眼的情況,還需要進一步的處理,比如篩選斜眼的情況等,所以這些清晰度合格的圖像就不再需要加一句話顯示圖像的清晰度的值了!
總結
- 上一篇: 财务管理【24】
- 下一篇: win7任务栏计算机怎么显示桌面,在wi