日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

opecv 证件照处理

發布時間:2023/12/31 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 opecv 证件照处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

測試圖片:

?

方法1:

#include "cv.h"#include "cxcore.h"#include "highgui.h"/****opencvchina.com每周一練第十三期**作者:opencvchina.com會員 ---> zhongguo*/void getAverage(IplImage* image,float* avg);//計算圖像sampleImageName hsv三個通道的均值//hSampleAvg:h通道的均值//sSampleAvg:s通道的均值//vSampleAvg:v通道的均值void init(char* sampleImageName , float* hSampleAvg , float* sSampleAvg, float* vSampleAvg){IplImage *srcColor;srcColor = cvLoadImage(sampleImageName,CV_LOAD_IMAGE_COLOR);if(!srcColor){printf("fail to load Image \n");exit(0);}IplImage* hsvFloat = cvCreateImage(cvGetSize(srcColor),32,3);IplImage* srcColorFloat = cvCreateImage(cvGetSize(srcColor),32,3);cvConvertScale(srcColor,srcColorFloat);cvCvtColor(srcColorFloat,hsvFloat,CV_BGR2HSV);IplImage* h = cvCreateImage(cvGetSize(srcColor),32,1);IplImage* s = cvCreateImage(cvGetSize(srcColor),32,1);IplImage* v = cvCreateImage(cvGetSize(srcColor),32,1);cvSplit(hsvFloat,h,s,v,NULL);getAverage(h,hSampleAvg);getAverage(s,sSampleAvg);getAverage(v,vSampleAvg);cvReleaseImage(&srcColor);cvReleaseImage(&hsvFloat);cvReleaseImage(&srcColorFloat);cvReleaseImage(&h);cvReleaseImage(&s);cvReleaseImage(&v);}//計算圖像的均值void getAverage(IplImage* image,float* avg){int x,y;float sum = 0 ;for(y=0;y<image->height;y++)for(x=0;x<image->width;x++){float value = cvGetReal2D(image,y,x);sum = sum + value;}*avg = sum/(float)(image->height*image->width);}int main(int argc, char* argv[]){float hSampleAvg , sSampleAvg, vSampleAvg , minH,maxH,disH;//加載樣本圖片 并計算hsv三個通道的均值init("sample1.jpg" , &hSampleAvg , &sSampleAvg, &vSampleAvg);IplImage *srcColor , *hsvFloat ,*srcColorFloat,*h,*s,*v;//加載樣本證件照圖像srcColor = cvLoadImage("1.jpg",CV_LOAD_IMAGE_COLOR);if(!srcColor){printf("fail to load image\n");return 0;}hsvFloat = cvCreateImage(cvGetSize(srcColor),32,3);srcColorFloat = cvCreateImage(cvGetSize(srcColor),32,3);cvConvertScale(srcColor,srcColorFloat);//顏色空間轉換 BGR-->HSVcvCvtColor(srcColorFloat,hsvFloat,CV_BGR2HSV);h = cvCreateImage(cvGetSize(srcColor),32,1);s = cvCreateImage(cvGetSize(srcColor),32,1);v = cvCreateImage(cvGetSize(srcColor),32,1);//分離h s v三個通道cvSplit(hsvFloat,h,s,v,NULL);for(int y=0;y<hsvFloat->height;y++){for(int x=0;x<hsvFloat->width;x++){float hValue = cvGetReal2D(h,y,x);float sValue = cvGetReal2D(s,y,x);float vValue = cvGetReal2D(v,y,x);minH = hValue < hSampleAvg ? hValue : hSampleAvg ;maxH = hValue > hSampleAvg ? hValue : hSampleAvg ;disH = MIN(maxH-minH,360-maxH+minH);//與樣本圖像的h s v三個通道的均值比較if((fabs(sValue-sSampleAvg)<0.2) && disH<40 && (fabs(vValue - vSampleAvg)<40)){cvSet2D(srcColor,y,x,cvScalar(255,255,255,0));}}}//顯示證件照圖像cvNamedWindow("src");cvShowImage("src",srcColor);cvWaitKey(0);//釋放圖像資源cvReleaseImage(&srcColor);cvReleaseImage(&hsvFloat);cvReleaseImage(&srcColorFloat);cvReleaseImage(&h);cvReleaseImage(&s);cvReleaseImage(&v);return 0;}

方法2:

#include "cv.h"#include "highgui.h"#include <iostream>using namespace std;/****opencvchina.com每周一練第十三期**作者:opencvchina.com會員 ---> JL2012JL*/int main(){IplImage*src=cvLoadImage("people.jpg");cvNamedWindow("cr");IplImage*ycrcb=cvCloneImage(src);IplImage*crdst=cvCloneImage(src);IplImage*s1=cvCreateImage(cvGetSize(src),8,1);cvCvtColor(src,ycrcb,CV_BGR2YCrCb);cvSplit(ycrcb,NULL,s1,NULL,NULL);int crh=255;int crl=115;cvCreateTrackbar("crh","cr",&crh,256,NULL);cvCreateTrackbar("crl","cr",&crl,256,NULL);cvShowImage("cr",s1);cvShowImage("src",src);while(1){cvSplit(ycrcb,NULL,s1,NULL,NULL);cvInRangeS(s1,cvScalarAll(crl),cvScalarAll(crh),s1);cvDilate(s1,s1);cvErode(s1,s1);cvZero(crdst);cvCopy(src,crdst,s1);cvShowImage("crdst",crdst);if(cvWaitKey(10)==27)break;}cvNot(s1,s1);cvSet(crdst,cvScalarAll(255),s1);cvShowImage("dst",crdst);cvWaitKey(0);cvDestroyWindow("cr");cvReleaseImage(&src);cvReleaseImage(&ycrcb);cvReleaseImage(&s1);cvReleaseImage(&crdst);return 0;}


?

?

總結

以上是生活随笔為你收集整理的opecv 证件照处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。