OPENCV
ớ ệ
ộ ể ữ ệ
ử ả
ộ ớ
Ớ Ệ
ượ ử
! " #$%&'(()ặ
%$"#*+ ươ ớ
ượ ử
,%* ộ ư ệ ử ả ở
-+. "#*+" /" 01222ả ượ ư
+. 31(4114'(4'14''ả
% %35 %% 4678/9: %" %4 :;$6 Ứ ụ ươ ườ ậ ạ ượ ặ ể
" %:<ộ
!" #$%'(()ặ
" %8=8>?@ặ
#$%&'(()
" ặ
15 +* " 3ả ạ ị ỉ
3AAB%ACA.6A
-DE''
'" ặ
! 13ướ F 6 ở ạ ọ
6-58B
! 'ướ 3 " ọ ư ụ ặ
3G''
! H3ướ Bọ
#$%
&'(()
Các b n hãy kh i đ ng ạ ở ộ Visual Studio 2008 sau đó th c hi n các thao tác sau:ự ệ
Click to Tools Options
Click Double to Projects and Solutions
. #* ạ ọ ượ
$ư ẽ
1
2
3
1
2
3
V n c a s đó nh ngẫ ở ử ổ ư
ch n Library filesọ
2
1
3
-CIJ-6
%$"#*+ ươ ớ
void main()
{
//Load ảnh vào biến ảnh
IplImage* img = cvLoadImage(“D:\pic1.jpg”);
//Tạo một cửa sổ để chứa ảnh
cvNamedWindow(“image”,CV_WINDOW_AUTOSIZE);
//Đưa ảnh đã load vào cửa sổ vừa tạo
cvShowImage(“image”,img);
//Nhấn 1 phím bất kỳ để tiếp tục
cvWaitKey(0);
//Giải phóng biến ảnh và cửa sổ đã cấp phát
cvReleaseImage(&img);
cvDestroyWindow(“image”);
}
K
Ộ ể ữ ệ
F 3ể ữ ệ ậ
44//%
6 %3ộ ể ữ ệ ử ụ
-4&L4M4&<
ệ ữ ể ậ
F ể % " %%.4"NN 6+*ườ ỉ ượ ử ụ ể
.+ ể ặ //%
Ả ư ộ ớ
6
&
5
O
OB
ể ữ ệ
7+9% ả
.P%" 7+9ể ư ỗ
+* % ộ ả
+* ả
%. ớ ữ ệ ả ộ ớ
+* % % .6ộ ủ ộ ữ ệ
6
&
5
O
OB
ữ ệ ả ỏ ớ
-3 " 1" + ư ữ ọ ộ ủ ể ả
typedef struct CvPoint
{
int x; /* x-coordinate, usually zero-based */
int y; /* y-coordinate, usually zero-based */
}
&L3 % Q ứ ư ữ ướ
typedef struct CvSize
{
int width; /* width of the rectangle */
int height; /* height of the rectangle */
}
M3 %$ ứ ữ ậ
typedef struct CvRect
{
int x; /* x-coordinate of the left-most rectangle corner[s] */
int y; /* y-coordinate of the top-most or bottom-most
rectangle corner[s] */
int width; /* width of the rectangle */
int height; /* height of the rectangle */
}
&3 %R .ứ ả ể
typedef struct CvScalar
{
double val[4];
}
Ử Ả
. ộ ơ ả
! . ơ ả ớ ả
. #%# % ộ ộ ọ ử ượ ả
K "*78%9ượ
D 5$.+ ả
!"#$ % &Ộ Ơ Ả
!" # $%& '(ọ ả ừ
IplImage* cvLoadImage(const char* filename,int iscolor=CV_LOAD_IMAGE_COLOR );
filename : chuỗi chứa đường dẫn tới file ảnh cần load
Các giá trị của iscolor :
CV_LOAD_IMAGE_COLOR :ảnh được chuyển thành ảnh RGB
CV_LOAD_IMAGE_GRAYSCALE :ảnh load vào được chuyển thành ảnh xám
CV_LOAD_IMAGE_UNCHANGED :ảnh load vào được giữ nguyên định dạng
) *# +,ạ ử ổ
int cvNamedWindow( const char* name, int flags );
name : chuỗi làm tên của cửa sổ sẽ tạo
flags : CV_WINDOW_AUTOSIZE : cửa sổ tự động hiển thị khớp với kích thước ảnh,người dùng không thể thay đổi kích thước
cửa sổ
!"#$ % &Ộ Ơ Ả
- $&% $%&./$# +, 01*2($& *.+3ể ị ả ử ổ ạ
void cvShowImage( const char* name, const CvArr* image );
name
:
chuỗi chứa tên cửa sổ muốn hiển thị ảnh lên
image
:
biển ảnh IplImage để hiển thị lên cửa sổ
4 $%ư ả
int cvSaveImage( const char* filename, const CvArr* image );
filename :
tên ảnh lưu
image :
ảnh muốn lưu
!"#$ % &Ộ Ơ Ả
5 * $%ạ ả
IplImage* cvCreateImage(CvSize size, int depth, int channels);
size : kích thước ảnh tạo
depth : số bit dành để lưu một kênh màu (độ sâu ảnh)
channels : số kênh màu trong ảnh
Vd :
IplImage* img = cvCreateImage ( cvGetSize (imgsrc), 8, 1 );
IplImage* img = cvCreateImage ( cvSize (width, height), 8, 3 );
'!#()!' % &* &#Ơ Ả Ớ Ả
SN ả
5 #7.69ạ ả ị
/Ả
5+TU+
56 % " ậ ị ể ả
67 Ả
5N'N 3ả
13E%6 B+ả ừ
CV_LOAD_IMAGE_GRAYSCALE
3
IplImage*img=cvLoadImage(“D:/image.jpg”,
CV_LOAD_IMAGE_GRAYSCALE)
;
'35 1B 1+NP%Q B ."#*ạ ớ ả ỉ ứ ướ ớ ả
IplImage* grayimg = cvCreateImage(cvGetSize(img),8,1);
&"N %ử ụ 79" ể ả
cvCvtColor(img,grayimg,
CV_RGB2GRAY
);
K
67 Ả
V3
879% " % ;N ỉ ượ ử ụ ả ả ể
% %% 7M!48&4/D48 &<9ữ ớ
void cvCvtColor(const CvArr* src,CvArr* dst,int code );
code3WM!'MX4WM!'8&4W8&'M!4WM!'8 &<
Ạ Ả Ị
& %5879ử ụ
1*8(#9%.(,%*10#*$,&97 :,.#;97 :1,&;1*8(&%.(,%*1;1*8(!+<+(;$&&%.(,%*1=2(3>
,.# $%"?9 *ả
1,& $%#% + $%$% 2%?$ả ứ ả ị
&%.(,%*1@A&. 2%?$$@ $@ị ưỡ
!+<9+(@A&. , 1 $@&.*$@B 2%?$$@ $@$% 2%?$ị ử ụ ể ưỡ ị
&%.(,%*1=2(B 2%?$$@ $@0 "?=#%C$@&+, 1 $@B 2%?$$@ $@ DEDF7EG3ể ưỡ ở ử ụ ể ưỡ
1
cvThreshold( img, binaryimg, 128, 256, CV_THRESH_BINARY );
K