You are on page 1of 22

I HC NNG - I HC BCH KHOA KHOA: CNG NGH THNG TIN

-----O0O------

BO CO
THC HNH X L NH S

Gio vin hng dn : Ts. Hunh Hu Hng Sinh vin thc hin Lp : V T Hi : 10T1LT.H2

Hu, thng 03, nm 2012

Bo co: Thc hnh X L nh S

GVHD: Ts. Hunh Hu Hng

Mc Lc
I. HNG DN CI T OPENCV. ........................................................................ 3 1. Gii thiu chung v th vin OpenCV. .................................................................... 3 2. Hng dn ci t OpenCV 2.1 vi Visual Studio 2008.......................................... 3 3. Cu hnh Visual Studio 2008 lin kt vi OpenCV.................................................. 8 4. To mt project s dng OpenCV. ......................................................................... 10 II. S DNG MT S HM C BN CA OPENCV. ......................................... 12 1. Ti nh, hin th li. ................................................................................................ 12 2. Chuyn nh sang nh Gray, hin th. ...................................................................... 12 3. Chuyn nh Gray sang nh nh phn, hin th. ...................................................... 13 4. Tch cc knh mu cvSplitPan, hin th. ................................................................ 14 5. Pht hin bin bng cc phng php hc, hin th. .......................................... 15 6. Lc nh(blur,gauss,median), hin th. ..................................................................... 16 7. n mn, lm dy, hin th. ...................................................................................... 17 8. Ct ngng, hin th. ............................................................................................... 18 9. Tm hiu hm pht hin khun mt trong OpenCV............................................... 19

SVTH: V T Hi. Lp: 10T1LT.H2

Trang: 2

Bo co: Thc hnh X L nh S

GVHD: Ts. Hunh Hu Hng

I. HNG DN CI T OPENCV.
1. Gii thiu chung v th vin OpenCV. OpenCV (Intel Open Source Computer Vision Library) l mt th vin m ngun m ca Intel vit cho x l nh. OpenCV gm cc hm c xy dng cho vic x l th gic my thi gian thc (real time computer vision). Cc thut ton x l nh thng thng ln cao cp u c ti u ha bi cc nh pht trin th vin thnh cc hm n gin v cho ngi dng d dng s dng. OpenCV h tr hai ngn ng chnh C/C++ v python. 2. Hng dn ci t OpenCV 2.1 vi Visual Studio 2008. Download min ph phn mm OpenCV trn Internet. Double click vo biu tng setup OpenCV 2.1. Ca s setup s hin th ln nh sau:

Hnh 1.

SVTH: V T Hi. Lp: 10T1LT.H2

Trang: 3

Bo co: Thc hnh X L nh S

GVHD: Ts. Hunh Hu Hng

Nhn Next, ca s tip theo s hin th:

Hnh 2. c cc iu khon, ng click vo I Agree, Cancel nu khng ng v hy b ci t. Chn Iagree, ca s tip theo s hin th.

Hnh 3.
SVTH: V T Hi. Lp: 10T1LT.H2 Trang: 4

Bo co: Thc hnh X L nh S

GVHD: Ts. Hunh Hu Hng

y chn Add OpenCV to the system PATH for all users v tip tc click vo Next.

Hnh 4. Chn ng dn ci t cho chng trnh, mc nh s l C:\OpenCV2.1. Nhn Next tip tc.

SVTH: V T Hi. Lp: 10T1LT.H2

Trang: 5

Bo co: Thc hnh X L nh S

GVHD: Ts. Hunh Hu Hng

Hnh 5. Tip tc Next

Hnh 6. y chn full chng trnh ci t ton b th vin. Sau click vo Install tin hnh ci t.
SVTH: V T Hi. Lp: 10T1LT.H2 Trang: 6

Bo co: Thc hnh X L nh S

GVHD: Ts. Hunh Hu Hng

Sau mt khon thi gian ci t:

Hnh 7. Click vo Finish hon tt qu trnh ci t.

SVTH: V T Hi. Lp: 10T1LT.H2

Trang: 7

Bo co: Thc hnh X L nh S

GVHD: Ts. Hunh Hu Hng

3. Cu hnh Visual Studio 2008 lin kt vi OpenCV. M Visual Studio 2008 ln. Click vo menu Tool, chn Option, chn Projects and Solution.

Hnh 8. Ti Show directories for chn: Include files. To 2 derectory mi dn n th mc ci OpenCV

Hnh 9. Tip theo cng ti Show directories for chn: Library files.
SVTH: V T Hi. Lp: 10T1LT.H2 Trang: 8

Bo co: Thc hnh X L nh S

GVHD: Ts. Hunh Hu Hng

Hnh 10. Cng tng t i vi Source files.

Hnh 11.

SVTH: V T Hi. Lp: 10T1LT.H2

Trang: 9

Bo co: Thc hnh X L nh S

GVHD: Ts. Hunh Hu Hng

4. To mt project s dng OpenCV. Chn New Project, y ta chn Visual C++, Win32, Win32 Console Application.

Hnh 12. Nhn chut phi vo project chn Properties/Configuration Properties/Linker/ Input. Chn Configuration l Debug. Ti Additional Dependencies nh vo: cv210d.lib cvaux210d.lib cxcore210d.lib cxts210d.lib cvhaartraining.lib highgui210d.lib ml210d.lib opencv_ffmpeg210d.lib.

SVTH: V T Hi. Lp: 10T1LT.H2

Trang: 10

Bo co: Thc hnh X L nh S

GVHD: Ts. Hunh Hu Hng

Hnh 13.

SVTH: V T Hi. Lp: 10T1LT.H2

Trang: 11

Bo co: Thc hnh X L nh S

GVHD: Ts. Hunh Hu Hng

II. S DNG MT S HM C BN CA OPENCV.


1. Ti nh, hin th li.
//Tai anh len IplImage *im_rgb=cvLoadImage("../Images/tahai.jpg"); /*Hien thi anh goc*/ cvShowImage("Anh Goc ", im_rgb);

Kt qu khi chy chng trnh:

Hnh 14. 2. Chuyn nh sang nh Gray, hin th.


//Doi sang anh Gray IplImage *im_gray=cvCreateImage(cvGetSize(im_rgb),IPL_DEPTH_8U,1); cvCvtColor(im_rgb,im_gray,CV_RGB2GRAY); //Hien thi anh Gray cvShowImage("Anh Gray",im_gray);

Kt qu khi chy chng trnh:

SVTH: V T Hi. Lp: 10T1LT.H2

Trang: 12

Bo co: Thc hnh X L nh S

GVHD: Ts. Hunh Hu Hng

Hnh 15. 3. Chuyn nh Gray sang nh nh phn, hin th.


//Doi anh Gray sang anh Nhi Phan IplImage*im_binary=cvCreateImage(cvGetSize(im_gray),IPL_DEPTH_8U,1); cvThreshold(im_gray,im_binary,100,250,CV_THRESH_BINARY); //Hien thi anh Nhi Phan cvShowImage("Binary 8 bit",im_binary);

Kt qu khi chy chng trnh:

Hnh 16.

SVTH: V T Hi. Lp: 10T1LT.H2

Trang: 13

Bo co: Thc hnh X L nh S

GVHD: Ts. Hunh Hu Hng

4. Tch cc knh mu cvSplitPan, hin th.


IplImage* imgRed = cvCreateImage(cvGetSize(im_rgb), IPL_DEPTH_8U, 1); IplImage* imgGreen = cvCreateImage(cvGetSize(im_rgb), IPL_DEPTH_8U, 1); IplImage* imgBlue = cvCreateImage(cvGetSize(im_rgb), IPL_DEPTH_8U, 1); // Tch Cc knh mu cvSplit(im_rgb, imgBlue, imgGreen, imgRed, 0); // Hien thi cvShowImage("Blue Channel",imgBlue); cvShowImage("Green Channel",imgGreen); cvShowImage("Red Channel",imgRed);

Kt qu khi chy chng trnh:

Hnh 17.

SVTH: V T Hi. Lp: 10T1LT.H2

Trang: 14

Bo co: Thc hnh X L nh S

GVHD: Ts. Hunh Hu Hng

Hnh 18.

Hnh 19. 5. Pht hin bin bng cc phng php hc, hin th.
IplImage* out = cvCreateImage( cvSize(im_gray->width/2,im_gray->height/2), im_gray->depth, im_gray->nChannels); // Reduce the image by 2 cvPyrDown( im_gray, out ); // Perform canny edge detection cvCanny( out, out, 10, 100, 3 ); // Hien thi anh cvShowImage("Lay Bien", out);

Kt qu khi chy chng trnh:


SVTH: V T Hi. Lp: 10T1LT.H2 Trang: 15

Bo co: Thc hnh X L nh S

GVHD: Ts. Hunh Hu Hng

Hnh 20. 6. Lc nh(blur,gauss,median), hin th.


IplImage* Filter_BLUR = cvCreateImage( cvGetSize(im_rgb), IPL_DEPTH_8U, 3 ); IplImage* Filter_GAUSSIAN = cvCreateImage( cvGetSize(im_rgb), IPL_DEPTH_8U, 3 ); IplImage* Filter_MEDIAN = cvCreateImage( cvGetSize(im_rgb), IPL_DEPTH_8U, 3 ); cvSmooth( im_rgb, Filter_BLUR, CV_BLUR, 7, 7 ); cvSmooth( im_rgb, Filter_GAUSSIAN, CV_GAUSSIAN, 7, 7 ); cvSmooth( im_rgb, Filter_MEDIAN, CV_MEDIAN, 7, 7 ); //Hien thi anh cvShowImage("Filter BLUR",Filter_BLUR); cvShowImage("Filter GAUSSIAN",Filter_GAUSSIAN); cvShowImage("Filter MEDIAN",Filter_MEDIAN);

Kt qu khi chy chng trnh:

Hnh 21.

SVTH: V T Hi. Lp: 10T1LT.H2

Trang: 16

Bo co: Thc hnh X L nh S

GVHD: Ts. Hunh Hu Hng

Hnh 22.

Hnh 23. 7. n mn, lm dy, hin th.


IplImage* AnMon=cvCreateImage(cvGetSize(im_rgb),IPL_DEPTH_8U,3); IplImage* LamDay=cvCreateImage(cvGetSize(im_rgb),IPL_DEPTH_8U,3); //An mon cvDilate( im_rgb, AnMon, NULL, 10); //Lam day cvErode( im_rgb, LamDay, NULL, 11); //Hien thi cvShowImage("An Mon",AnMon); cvShowImage("Lam Day",LamDay);

Kt qu khi chy chng trnh:


SVTH: V T Hi. Lp: 10T1LT.H2 Trang: 17

Bo co: Thc hnh X L nh S

GVHD: Ts. Hunh Hu Hng

Hnh 24.

Hnh 25. 8. Ct ngng, hin th.


IplImage* CatNguong = cvCreateImage( cvGetSize(im_rgb), im_rgb->depth, 1 ); // Allocate image planes IplImage* r = cvCreateImage( cvGetSize(im_rgb), IPL_DEPTH_8U, 1 ); IplImage* g = cvCreateImage( cvGetSize(im_rgb), IPL_DEPTH_8U, 1 ); IplImage* b = cvCreateImage( cvGetSize(im_rgb), IPL_DEPTH_8U, 1 ); // Split image onto the color planes cvSplit( im_rgb, r, g, b, NULL ); IplImage* s = cvCreateImage( cvGetSize(im_rgb), IPL_DEPTH_8U, 1 );

SVTH: V T Hi. Lp: 10T1LT.H2

Trang: 18

Bo co: Thc hnh X L nh S

GVHD: Ts. Hunh Hu Hng

// Add equally weighted rgb values cvAddWeighted( r, 1./3., g, 1./3., 0.0, s ); cvAddWeighted( s, 2./3., b, 1./3., 0.0, s ); // Truncate values over 100 cvThreshold( s, CatNguong, 100, 100, CV_THRESH_TRUNC ); //Hien thi cvShowImage("Cat nguong",CatNguong);

Kt qu khi chy chng trnh:

Hnh 26. 9. Tm hiu hm pht hin khun mt trong OpenCV.

A. Pht hin khun mt trong hnh nh. Trong OpenCV c sn file haarcascade_frontalface_alt.xml, chng ta ch vic ly n ra v s dng. Khi ly file ny ra th chng ta phi ch ng dn cho tht chnh xc. V d: ti ci OpenCV 2.1 trn C nn ng dn file haarcascade_frontalface_alt.xml s l:
"C:/OpenCV2.1/data/haarcascades/haarcascade_frontalface_alt.xml.

SVTH: V T Hi. Lp: 10T1LT.H2

Trang: 19

Bo co: Thc hnh X L nh S

GVHD: Ts. Hunh Hu Hng

Sau y l code chng trnh:


int main() { CvHaarClassifierCascade * pCascade = 0; //con tr nhn din, nm gi data trong file XML CvMemStorage * pStorage = 0; //khi to b nh m CvSeq * pFaceRectSeq; int i; //khi to IplImage * pInpImg = cvLoadImage("../nd.jpg",CV_LOAD_IMAGE_COLOR); pStorage = cvCreateMemStorage(0); pCascade = (CvHaarClassifierCascade *)cvLoad(("C:/OpenCV2.1/data/haarcascades/haarcascade_frontalface_alt.xml"),0,0 ,0); if (!pInpImg || !pStorage || !pCascade ) { printf("Khoi tao that bai: %s \n", (!pInpImg)? "khong the load file hinh anh" : (!pCascade)? "khong the load file xml -- " "kiem tra dung duong dan":"sai duong dan"); exit(-1); } //nhn dng mt trong nh pFaceRectSeq = cvHaarDetectObjects( pInpImg, pCascade, pStorage, 1.1, 3, CV_HAAR_DO_CANNY_PRUNING, cvSize(0,0)); //to sa s hin th hnh nh cvNamedWindow("Nhan dien khuon mat trong hinh anh",CV_WINDOW_AUTOSIZE); //v hnh ch nht xung quanh khun mt for (i=0;i<(pFaceRectSeq ? pFaceRectSeq->total:0);i++) { CvRect * r = (CvRect*)cvGetSeqElem(pFaceRectSeq,i); CvPoint pt1 = {r->x,r->y}; CvPoint pt2 = {r->x + r->width,r->y + r->height}; cvRectangle(pInpImg,pt1,pt2,CV_RGB(255,0,0),3,4,0); } //hin th nhn din cvShowImage("Nhan dien khuon mat trong hinh anh",pInpImg); cvWaitKey(0); cvDestroyAllWindows(); //gii phng b nh cvReleaseImage(&pInpImg); if (pCascade) cvReleaseHaarClassifierCascade(&pCascade); if (pStorage) cvReleaseMemStorage(&pStorage); }

SVTH: V T Hi. Lp: 10T1LT.H2

Trang: 20

Bo co: Thc hnh X L nh S

GVHD: Ts. Hunh Hu Hng

Kt qu sau khi chy chng trnh:

Hnh 27. B. Pht hin khun mt trong Webcam. Sau y l code chng trnh:
#include "stdafx.h" #include "cv.h" #include "highgui.h" #include <iostream> #include <cstdio> using namespace std; using namespace cv; int main(int argc, char *argv[]) { int c; IplImage* image; //Mo WebCam CvCapture* capture = cvCaptureFromCAM(0); cvNamedWindow("NHAN DIEN KHUON MAT",0); for(;;) { image = cvQueryFrame(capture); CvHaarClassifierCascade* cascade; CvMemStorage* storage; CvSeq* faces; storage=cvCreateMemStorage(0); //Load du lieu tu file XML cascade = (CvHaarClassifierCascade*)cvLoad("C:/OpenCV2.1/data/haarcascades/haarcascade_fr ontalface_alt.xml",NULL, NULL, NULL);

SVTH: V T Hi. Lp: 10T1LT.H2

Trang: 21

Bo co: Thc hnh X L nh S

GVHD: Ts. Hunh Hu Hng

faces = cvHaarDetectObjects( image, cascade, storage, 1.2, 2,0,cvSize(0,0)); for(int i=0;i<(faces ? faces->total:0); i++ ) { CvRect* r = (CvRect*)cvGetSeqElem(faces, i ); CvPoint pt1 = { r->x, r->y }; CvPoint pt2 = { r->x + r->width, r->y + r->height }; cvRectangle( image, pt1, pt2, CV_RGB(255,0,0), 3, 8, 0 ); } //Hien thi cua so nhan dang khuon mat if(image != 0) cvShowImage("NHAN DIEN KHUON MAT", image); c = cvWaitKey(10); if(c == 27) break; } cvWaitKey(0); cvDestroyAllWindows(); return 0; }

Kt qu sau khi chy chng trnh:

Hnh 28.

SVTH: V T Hi. Lp: 10T1LT.H2

Trang: 22

You might also like