锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
static void make_pic(CString infilename,CString outfilename)
{
IplImage *image = cvLoadImage(infilename,3);
if ((image->height > 1000) && (image->width > 2000))
{
IplImage *newimgtmp = cvCreateImage(cvSize(image->width/2,image->height/2),image->depth,image->nChannels);
cvResize(image,newimgtmp,CV_INTER_LINEAR);
// image = newimgtmp;
cvReleaseImage(&newimgtmp);
}
if (image == NULL)
{
MessageBox(NULL,"璇誨彇鍥劇墖澶辮觸","澶辮觸",MB_OK);
readpicSucess = false;
return ;
}
const char *cascade_name = "data/haarcascades/haarcascade_frontalface_alt2.xml";
CvHaarClassifierCascade *cascade = (CvHaarClassifierCascade*)cvLoad(cascade_name);
if (cascade == NULL)
{
::MessageBox(NULL,"娌℃湁data鏂囦歡澶癸紝璇誨彇鍒嗙鍣ㄥけ璐?,"澶辮觸",MB_OK);
readSucess = false;
return ;
}
else
{
detect_and_draw_objects(image,cascade,1,infilename,outfilename);
cvReleaseHaarClassifierCascade(&cascade);
cvReleaseImage(&image);
}
}
鍦ㄥ浘紺虹殑綰㈣壊閮ㄥ垎錛屽鍔犱簡涓涓祴鍊艱鍙ワ紝灝辨槸璇磋祴鍊肩殑璇濆皢榪欎釜灝哄緇檌mg錛屽彲鏄疄闄呬笂錛屾牴鏈病鏈夊繀瑕侊紝鍥犱負resize鏈潵宸茬粡鍋氬ソ浜嗚繖涓伐浣滐紝鑰岄氳繃鏌ヤ功錛岀粓浜庡彂鐜頒簡錛岀劧鍚庢敞閲婃帀璇ュ彞錛孫K錛屽畬鍏ㄦ病鏈変換浣曢棶棰橈紒
浣撲細鏄細
棣栧厛瑕佺‘瀹氫唬鐮佺殑鑼冨洿錛屽洜涓哄彧鏀規浜嗛偅涓閮ㄥ垎錛岃屼笖娉ㄩ噴鍚庢病鏈夐棶棰橈紝鎵浠ュ氨鏄繖涓儴鍒嗙殑闂錛岀劧鍚庨愬彞鐨勬潵鎵鵑敊璇傞渶瑕佹敞鎰忕殑鏄槸鍚﹀悎娉曪紝灝卞儚榪欎釜璧嬪鹼紝灝辨槸鍙鑰屼笉鍚堟硶鐨勬搷浣滐紝鏍規湰娌℃湁瑙佽繃涓や釜鐩存帴鐨勮繖涓祴鍊鹼紝iplimag鐨勭被鍨嬪彲浠ョ洿鎺ヨ祴鍊煎悧錛熸樉鐒舵病鏈夛紝鎵浠ュ氨鍙互寰楀埌榪欎釜緇撹銆?br>璋冭瘯錛屾槸紼嬪簭鐨勫繀欏伙紝鑰岄潰瀵瑰洶闅劇殑鏃跺欙紝澶氳蛋涓姝ワ紝鏈潵灝變細灝戣蛋涓姝ワ紒
]]>
2.鍑虹幇浜嗕笉鍚堥傜殑type錛屽師鍥犳槸閲囩敤鐨勫弬鏁頒笉瀵癸紝鎴栬呮槸鍓嶅悗鐨勫唴瀹逛笉涓鑷淬傛瘮濡傝鍦ㄨ繘琛岀洿鏂瑰浘閲囨牱鐨勬椂鍊欙紝鍙傛暟浼犻掓槸鏈夎絀剁殑錛屽鏋滀笉鎱庯紝瀹規槗鍑虹幇閿欒銆?br>
3.MFC涓嚭鐜伴敊璇倀his鎸囬拡鍙兘鐢ㄥ湪褰撳墠綾諱腑錛岃屽湪static鍑芥暟涓紝濡傛灉鍑虹幇灝變細鎶ラ敊錛屽緢鏄庢樉鐨勯敊璇紝java鑰佸笀涔熻榪囷紝static鏄被鍙橀噺錛岃宼his鏄拡瀵逛簬涓涓疄渚嬬殑銆?br>
4.緇撴瀯浣撳唴瀹癸紝鐗瑰埆鏄疘plImage緇撴瀯浣撴湁寰堝ぇ鐨勪綔鐢紝鍏朵腑錛宧eight鍜寃idth閮戒竴涓噸瑕佺殑浣滅敤錛岃繕鏈夛紝浣犺閲嶆柊瀹氫箟涓涓ぇ灝忕殑璇濓紝鐢╟vResize鍑芥暟鏉ュ疄鐜幫紝鍥犱負榪欎釜鍑芥暟鍙互瀹炵幇灝嗙洰鏍囧浘鍍忕粨鏋勭殑鎸囬拡杞寲鎴愪綘瑕佸緱鍒扮殑鍥懼儚銆傛鏃跺氨鍙互灝嗗叾杞寲鎴愮伆搴﹀浘鍍忋?br>
if ((height>200)||(width>200))
2
{
3 IplImage *tmp = cvCreateImage(cvSize(200,200),IPL_DEPTH_8U,3);
4 cvResize(newImg, tmp, CV_INTER_LINEAR); //緙╂斁婧愬浘鍍忓埌鐩爣鍥懼儚
5 IplImage *greyImage = cvCreateImage(cvSize(tmp->width,tmp->height),IPL_DEPTH_8U,1);
6 cvCvtColor(tmp,greyImage,CV_BGR2GRAY);
7 cvSaveImage(outfilename,greyImage);
8 }
9 else
10
{
11 IplImage *greyImage = cvCreateImage(cvSize(newImg->width,newImg->height),IPL_DEPTH_8U,1);
12 cvCvtColor(newImg,greyImage,CV_BGR2GRAY);
13 cvSaveImage(outfilename,greyImage);
14 }
涓涓牱渚嬶紝鏈潵鐢熸垚鐨勭伆搴﹀浘鐗囧簲璇ユ槸bmp鏍煎紡錛屾棤濂堜笉鏀寔錛屾墍浠ユ埅鍥炬潵澶勭悊銆?br>
]]>
鏀逛負濡備笅褰㈠紡錛?/font>
<DirectXSDKInstallFolder>\include
<DirectXSDKInstallFolder>\samples\C++\DirectShow\BaseClasses
鍒?includes' 鎼滅儲璺緞涓?(鍦?Tools->Options->Directories->Include files in case of Developer Studio 6.0)
娣誨姞 <DirectXSDKInstallFolder>\lib 鍒板簱鎼滅儲璺緞涓?(鍦?Tools->Options->Directories->Library files in case of Developer Studio 6.0)
娉ㄦ剰: 灝嗕笂闈㈠鍔犵殑涓滀笢娣誨姞鍒版渶欏剁錛屽惁鍒欒繕浼氬嚭鐜扮紪璇戞垨閾炬帴閿欒銆傚洜涓?Developer Studio 6.0 鍖呭惈浜嗕竴浜涜佺増鏈殑 DirectX 澶存枃浠跺拰搴撴枃浠訛紝瀹冧滑涓庢柊鐗堟湰鏈夊啿紿併?/strong>
================================1 鏄劇ずIplImage鍒版寚瀹氱獥鍙?================================= ==================================2 浣嶅浘緙╂斁================================== GDI鑷甫鐨勬彃鍊肩畻娉曞緢鎱?br>::SetStretchBltMode(hdc, HALFTONE);//鍚嶅0寰堜笉濂界殑涓涓嚱鏁?/p>
GDI+鑷甫鐨勬彃鍊肩畻娉曞緢蹇紝浣咷DI+灝佽鐨勫お鍘夊錛屾病鏈夊鍑轟換浣曟帴鍙o紝浣跨敤涓嶆柟渚匡紝鏁堢巼鍥犳鑰屼笅闄嶏紝涔熷彲鑳芥垜娌℃壘鍒?. OpenCV鐨勬彃鍊肩畻娉曚篃闈炲父蹇紝騫朵笖緇欏嚭鍗曠嫭鐨勫嚱鏁?婧愮爜閮芥湁)錛屼嬌鐢ㄦ柟渚匡紝濡傛灉鍚堢悊浣跨敤錛屾瘮GDI+紼嶅揩 褰撶劧浣犱篃鍙互鑷繁鍐欐彃鍊肩畻娉?.......... 涓嬮潰鏄疧penCV緙╂斁浣嶅浘鐨勫嚱鏁? ================================== 3 鍥劇墖璇誨彇涓庤漿鎹?================================== ================================== 4 鎴彇鎸囧畾閮ㄥ垎鍥懼儚 ================================== ================================== 5 鍑犱釜甯哥敤鐨勫皬鍑芥暟 ================================== cvSet(pImg,cvScalarAll(255));//鎶婄伆搴﹀浘緗垚鍏ㄧ櫧 鍏堟潵鐪嬬湅涓婇潰鐨勪唬鐮侊紝鏈▼搴忔槸鍦╳in32 console application錛屽嵆鎺у埗鍙扮▼搴忥紝鎵浠ヤ細鍑虹幇鍛戒護琛屽璇濇銆傜幇鍦ㄧ殑闂鏄紝榪欎釜紼嬪簭鐨勫悇涓儴鍒嗗埌搴曟槸浠涔堟剰鎬濄?br>閭d箞錛屾垜灝遍愪釜鏉ヨ榪板惂銆?br>棣栧厛浠巑ain鍑芥暟鍏ュ彛榪涘叆錛屽叾涓璵ain鍑芥暟鐨勪袱涓弬鏁板氨鏄懡浠よ褰㈠弬錛岀劧鍚庡浜?span style="COLOR: #000000">#include <GL/glut.h>錛岃繖涓槸鍖呮嫭鐨勪竴涓猤lut鐨勫ご鏂囦歡錛岄噷闈㈠畾涔変簡寰堝鍑芥暟錛屽湪榪愯璇ョ▼搴忎箣鍓嶏紝闇瑕佸皢VC涓殑鐩稿叧鐜璁劇疆濂姐傝繖閲岀暐璇淬?br>鐪嬬湅絎竴涓嚱鏁幫紝浠巊lutInit鍙互鐪嬪埌灝辨槸涓涓垵濮嬪寲錛屼笉閿欙紝榪欎釜鍑芥暟鐨勪綔鐢ㄥ氨鏄垵濮嬪寲紿楀彛鑳屾櫙錛屽浜庝竴涓▼搴忥紝鍦ㄥ紑濮嬭繍琛岀殑鏃跺欑殑鍒濆鍖栧伐浣滅殑閲嶈鎬э紝鍙兂鑰岀煡浜嗭紝蹇呰鑰屼笖蹇呴』錛?br>1.緇樺埗鍥懼艦鐨勬楠ゃ傛墍鏈夌殑鍥懼艦閮藉簲璇ュ湪glBegin()鍜実lEnd()涓粯鍒訛紝鍚﹀垯 浼氶粯璁や負涓烘病鏈夌粯鍒剁殑銆?br>glBegin(GL_LINES); 鍏舵錛実lBegin()鍑芥暟鐨勬ā寮忥紝鍙互閫夋嫨 GL_POINTS,GL_LINES,GL_POLYGON,GL_LINE_LOOP 鍒欑殑璇濅細鐪嬩笉鍒扮殑錛屾垜鏇劇粡鍋氳繃錛屾病鏈夋樉紺猴紝榪樹互涓洪敊浜?#8230;… 榪欑妯″紡鏄劇ず鐨勮瘽灝辨槸涓涓~鍏呯殑涓夎褰紝涓轟綍錛屽洜涓虹浉褰撲簬榪炴帴榪欎笁涓偣 褰㈡垚涓涓杈瑰艦鐨勬潵濉厖銆?br>GL_LINE_LOOP:緇樺埗鍑烘潵鐨勭偣灝嗗仛鍒伴灝劇浉榪烇紝璇曟兂錛屽鏋滀笉鏄敤鐨勮繖涓?/span> 鑰屾槸鐩存帴鐢╨ine鐨勮瘽錛岄偅涔堝氨瑕佹墜鍔ㄨ繛鎺ワ紝鍗沖湪鏈鍚庝竴涓偣鐨勬槸寰堟斁涓涓 鑺傜偣榪炶搗鏉ャ?br>GL_LINE_STRIP:榪炶搗鏉ョ殑鏄竴鏁存潯鐨勩傚尯鍒細涓巐ine涓嶅悓錛岃繛鎺ョ殑鏄痩ine 鐨勮瘽涓棿鏈夐棿闅旂偣灝變笉浼氳繛璧鋒潵錛岃岀敤榪欎釜鐨勮瘽浼氭妸鐩擱偦鐨勭偣榪炶搗鏉ャ?/span> 2.鍧愭爣涓哄師鐐圭殑鍦ㄦ涓棿銆傜敾鍑烘潵鐨勶紝鐪嬬殑銆?br>3.鐢誨嚭鏉ョ殑鍥懼艦鏄竴鏍鳳細 鐒跺悗渚濇榪炶搗鏉ワ紝騫舵渶緇堢粨灝鵑灝撅紝涓嶇鏈夊嚑涓偣銆?/span> 4. glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE) 鏍?br>glutInitWindowSize(500, 500); //紿楀彛鐨勫ぇ灝忥紝闀垮拰瀹?br>glutCreateWindow("絎竴涓狾penGL紼嬪簭");//紿楀彛鐨勫悕瀛楋紝title銆?/span> 5.璋冪敤鐩稿叧鐨勫嚱鏁板疄鐜扮粯鍒訛紝鐗瑰埆鏄浜庝竴涓粯鍒訛紝鐢ㄧ殑鏄嚱鏁幫紝璋冪敤涓嬮潰 鐨勬槸浼犻掍竴涓寚閽堛?br>glutDisplayFunc(&myDisplay);
3. 娣誨姞瀹屽伐紼嬫枃浠跺悗灝卞緱榪涜璁劇疆浜嗭紙榪欓噷璋冨埌release鐗堟湰錛宒ebug鐗堟湰綾諱技錛?
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib cxcorel.lib cvl.lib highguil.lib cvcamL.lib
]]>
MFC浣跨敤OPenCV甯哥敤鍑芥暟鎼滈泦
public:
BITMAPINFO *m_pBITMAPINFO_24;// 24浣嶇湡褰╁浘BITMAPINFO鏍煎紡鍥哄畾錛屾彁鍓嶅垱寤?嬈″茍淇濆瓨鎸囬拡
BITMAPINFO *m_pBITMAPINFO_08;// 8浣嶇伆搴﹀浘BITMAPINFO鏍煎紡鍥哄畾錛屾彁鍓嶅垱寤?嬈″茍淇濆瓨鎸囬拡
void DrawImgToWnd(CWnd *pWnd, IplImage *pImg)
{
RECT rc;
pWnd->GetClientRect(&rc);
CDC *pDC = pWnd->GetDC();
HDC hdc = pDC->GetSafeHdc();
if(pImg->nChannels == 3) // 3閫氶亾
{
m_pBITMAPINFO_24->bmiHeader.biWidth = rc.right;
m_pBITMAPINFO_24->bmiHeader.biHeight = rc.bottom;//榪欓噷璐熷艱〃紺烘樉紺洪暅鍍忎綅鍥?br> ::StretchDIBits(
hdc,
0, 0, rc.right, rc.bottom,
0, 0, pImg->width, pImg->height,
pImg->imageData, m_pBITMAPINFO_24, DIB_RGB_COLORS, SRCCOPY);
}
else // 鍗曢氶亾
{
m_pBITMAPINFO_24->bmiHeader.biWidth = rc.right;
m_pBITMAPINFO_24->bmiHeader.biHeight = rc.bottom;//榪欓噷璐熷艱〃紺烘樉紺洪暅鍍忎綅鍥?br> ::StretchDIBits(
hdc,
0, 0, rc.right, rc.bottom,
0, 0, pImg->width, pImg->height,
pImg->imageData, m_pBITMAPINFO_08, DIB_RGB_COLORS, SRCCOPY);
}
pWnd->ReleaseDC(pDC);
}
涓婇潰鐨勫嚱鏁癉rawImgToWnd鍙兘鍘熸瘮渚嬫樉紺轟綅鍥撅紝浣嗗疄闄呬腑閫氬父鏄緙╂斁鍚庢樉紺虹殑
IplImage *pImg_24 = cvCreateImage(cvSize(WND_WIDTH, WND_HEIGHT),8, 3);//鍒涘緩涓庣獥鍙e悓澶у皬鐨勭┖鍥?br>cvResize(pImg, pImg_24, CV_INTER_LINEAR);//鎶婃簮鍥劇緝鏀捐嚦紿楀彛澶у皬
DrawImgToWnd(CWnd *pWnd, pImg_24);//涓婇潰鍐欑殑鍑芥暟錛屾樉紺轟笌紿楀彛鍚屽昂瀵哥殑浣嶅浘
cvReleaseImage(&pImg);//閲婃斁鍐呭瓨
濡傛灉錛宲Img_24鎴戜滑浜嬪厛瀹氫箟鎴愬叕鍏卞彉閲忓茍鍒濆鍖栵紝灝嗙渷鍘繪瘡嬈$緝鏀鵑噸澶嶅垱寤洪噴鏀懼唴瀛樼殑鎿嶄綔錛岃繖鏍峰仛灝卞彲浠ユ瘮GDI+蹇簡
// cvLoadImage絎簩涓弬鏁?-1:璇誨彇鍥懼儚鐨勫師閫氶亾鏁?0:寮哄埗鐏板害鍥?1: 璇誨彇褰╄壊鍥?
IplImage *pImgSrc = cvLoadImage("娓呮櫚闈㈠寘.bmp",-1);
cvSaveImage("c:\\demo.bmp", pImgSrc);
cvSaveImage("c:\\demo.png", pImgSrc);
cvSaveImage("c:\\demo.jpg", pImgSrc);
cvSaveImage("c:\\demo.tiff", pImgSrc);
cvReleaseImage(&pImgSrc);
OpenCV璨屼技涓嶆敮鎸乬if鏂囦歡
IplImage* cvGetSubImage(IplImage *pImgSrc, CvRect rc)
{
cvSetImageROI(pImgSrc,rc); // 閫変腑鎸囧畾閮ㄥ垎
IplImage *pImgDst = cvCreateImage(cvSize(rc.width, rc.height), pImgSrc->depth, pImgSrc->nChannels);
cvCopy(pImgSrc, pImgDst); // copy婧愬浘閫変腑閮ㄥ垎鑷蟲柊鍥?br> cvResetImageROI(pImgSrc); // 婧愬浘鍙栨秷閫変腑
return pImgDst;
}
cvSet(pImg,cvScalarAll(0));//鎶婄伆搴﹀浘緗垚鍏ㄩ粦
cvCvtColor(pImgSrc, pImgDst, CV_BGR2GRAY);//鐏板害鍖?br>cvThreshold(pImgSrc,pImgDst,141,255,CV_THRESH_BINARY); //鐏板害鍥劇殑浜屽煎寲錛?41涓洪榾鍊?/p>
銆婄敱浜庢椂闂村師鍥狅紝浠ュ悗鏁寸悊鍑烘潵錛屽緟緇?/p>
]]>#include <GL/glut.h>
2#include <math.h>
3const int n = 200;
4const GLfloat R = 0.5f;
5const GLfloat Pi = 3.1415926536f;
6
7void myDisplay(void)
8{
9 int i;
10 glClear(GL_COLOR_BUFFER_BIT);
11 glBegin(GL_POLYGON);
12 for(i=0; i<n; ++i)
13 glVertex2f(R*cos(2*Pi/n*i), R*sin(2*Pi/n*i));
14 glEnd();
15 glFlush();
16}
17
18
19
20int main(int argc, char *argv[])
21{
22 glutInit(&argc, argv);
23 glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
24 glutInitWindowPosition(200, 200);
25 glutInitWindowSize(500, 500);
26 glutCreateWindow("絎竴涓狾penGL紼嬪簭");
27 glutDisplayFunc(&myDisplay);
28 glutMainLoop();
29 return 0;
30}
31
glVertex2f(0.0f, 0.0f);
glVertex2f(2.0f,8.0f);
glEnd();
瀵逛簬鍚勭妯″紡鐨勮鏄庯細
GL_POINTS錛氱粯鍒剁殑鏄偣錛屼篃灝辨槸鍗曚釜鐨勭偣錛岃繖鏍鋒樉紺虹殑鏃跺欎笉浼氱湅鍒般?br>GL_LINES錛氱粯鍒剁殑鏄竴鏉$洿綰匡紝娉ㄦ剰鐐圭殑鍧愭爣涓瀹氳鍦ㄧ粯鍒剁殑鑼冨洿鍐咃紝鍚?/span>
GL_POLYGON錛氭樉紺虹殑鏄竴涓杈瑰艦錛屾瘮濡傚湪鍏朵腑緇樺埗浜嗕笁涓偣錛岄偅涔堜互
void myDisplay(void)
{
GLfloat x;
int i;
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINES);
glVertex2f(0.0f, 0.0f);
glVertex2f(-0.123f,-0.423f);
glVertex2f(0.53f, 0.98f);
glVertex2f(0.0f, 0.0f);
glVertex2f(-0.123f,-0.423f);
glVertex2f(0.53f, 0.98f);
glEnd();
glFlush();
}
緇樺埗欏哄簭鐨勬槸姣忎袱涓偣灝卞仛鍑烘潵涓鏉$洿綰褲?br>void myDisplay(void)
{
GLfloat x;
int i;
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINE_LOOP);
glVertex2f(0.0f, 0.0f);
glVertex2f(-0.123f,-0.423f);
glVertex2f(0.53f, 0.98f);
glEnd();
glFlush();
}
緇樺埗鐨勬椂鍊欏氨鏄浜庤繖涓変釜鐐歸灝劇浉榪炪傜粯鍒剁殑鏃跺欏浜庡悇涓偣渚濇鑱旂郴錛?/span>
鍒濆鍖栨樉紺虹殑妯″紡錛岀涓涓弬鏁版樉紺虹殑鏄互RGB妯″紡錛屽悗鑰呮槸鎸囧崟緙撳啿鍖恒?br>璇︾粏鐨勫悗闈㈠涔犱腑鍐嶉亣鍒般?br>glutInitWindowPosition(200, 200); //鍒濆鍖栫獥鍙g殑浣嶇疆錛屼竴涓偣鐨勫潗
glutMainLoop();
]]>