1
Tìm hiểu về OpenCV – Nhóm 17 – Tuấn Lực – Thành Phú
OPENCV 1. Giới thiệu về OpenCV 2. Cách cài đặt a. Cài đặt trên VS 2008 b. Cài đặt trên VS 2010 3. Các hàm xử lí ảnh a. Hiển thị ảnh b. Lưu hình ảnh c. Biến đổi ảnh d. Lọc ảnh e. Tìm biên 4. Các hàm xử lí Video a. Đọc Video từ file b. Lấy ảnh từ Camera c. Lưu Video
2
Tìm hiểu về OpenCV – Nhóm 17 – Tuấn Lực – Thành Phú
Giới thiệu về OpenCV OpenCV là gì?
OpenCV là một thư viện mã nguồn mở phục vụ cho việc nghiên cứu hay phát triển về thị giác máy tính. Tối ưu hóa và xử lí các ứng dụng trong thời gian thực. Giúp cho việc xây dựng các ứng dụng xử lí ảnh, thị giác máy tính, ... .. . một cách nhanh hơn. OpenCV có hơn 500 hàm khác nhau, được chia làm nhiều phần phục vụ các công việc như: xử lí hình h ình ảnh y tế, an ninh, camera quan sát, nhận diện, robots, ...
Ai sẽ sử dụng OpenCV?
Đầu tiên chúng ta phải hiểu: OpenCV là mã nguồn mở và chúng ta không phải trả bất cứ một đồng nào cho nó. Tất cả chúng ta đều có thể sử dụng OpenCV tùy theo việc chúng ta sử dụng nó như thế nào vào việc gì.
Sử dụng OpenCV để làm gì?
Xử lí ảnh, quan sát, an ninh, robots, ... Tất cả những gì mà bạn nghĩ rằng liên quan đến thị giác máy tính thì bạn có thể sử dụng OpenCV để làm. Thay vì lập trình cho các thuật toán xử lí ảnh thì bạn đã có sẵn trong tay một thư viện về các hàm đó. Công việc của bạn chỉ là sử dụng nó. Và bạn có thể lập trình cho các thiết bị máy móc để cho nó có thể “nhìn”,...
Download và cài đặt OpenCV Download tại: http://sourceforge.net/projects/opencvlibrary/ Tài liệu hướng dẫn: Các bạn nên sử dụng cuốn Learning OpenCV (Dr. Gary Rost Bradski & Dr. Adrian Kaehler) Ghi chú: Các bạn có lấy file đính kèm của tài liệu này
Cài đặt: Ghi chú: Các bạn phải download thêm phần mềm CMAKE tại địa chỉ: http://cmake.org
Cài đặt chung: B1: Cài đặt phần mềm OpenCV (Các bạn có thể sử dụng phiên bản 2.1 hoặc 2.2). B2: Cài đặt cmake và làm theo hướng dẫn B2.1: Tạo một thư mục có tên: Build trong thư mục cài đặt OpenCV. (VD: Tạo thư mục Build trong thư mục C:/OpenCV2.2) B2.2: Khởi động Cmake và điền các thông số như hình bên
3
Tìm hiểu về OpenCV – Nhóm 17 – Tuấn Lực – Thành Phú
Tiếp tục nháy vào nút Configure
Chọn phiên bản Visual Studio đang dùng rồi click vào Finish
Tiếp tục nháy vào nút Configure
Click vào Generate rồi thoát Cmake. B2.3: Mở thư mục OpenCV2.2\Build (hoặc OpenCV2.1 nếu bạn cài OpenCV2.1) Mở file OpenCV.sln (C:\OpenCV2.2\Build\OpenCV.sln) B2.3: Tại giao diện của Visual Studio chọn Release rồi Build Solution (Nhấn F6 hoặc F7)
4
Tìm hiểu về OpenCV – Nhóm 17 – Tuấn Lực – Thành Phú Chờ đến khi build xong thì bạn thoát ra rồi tạo một Project mới.
Cài đặt OpenCV trên Visual Studio 2008 Bạn thao tác như sau: Tools
Chọn VC++ Directories
Options
Include files
Thêm các thư mục sau vào.
Với bản OpenCV2.2 các bạn thêm các thư mục sau: (Tùy theo bạn sử dụng mà bạn thêm) C:\OpenCV2.2\include C:\OpenCV2.2\include\opencv C:\OpenCV2.2\include\opencv2\imgproc C:\OpenCV2.2\include\opencv2\features2d c:\OpenCV2.2\include\opencv2\objdetect
5
Tìm hiểu về OpenCV – Nhóm 17 – Tuấn Lực – Thành Phú Với bản OpenCV2.1 bạn thêm các thư mục sau: C:\OpenCV2.1\Build\bin\Release C:\OpenCV2.1\Build\bin C:\OpenCV2.1\include C:\OpenCV2.1\include\opencv Tiếp tục các bạn chọn VC++ Directories viện vào.
Library files
Với bản OpenCV2.2 bạn chỉ cần thêm: C:\OpenCV2.2\lib Với bản OpenCV2.1 bạn thêm các thư mục sau: C:\OpenCV2.1\Build\lib\Release C:\OpenCV2.1\Build\lib C:\OpenCV2.1\lib Tiếp đến các bạn chọn:
Thêm các thư mục chứa các thư
Tìm hiểu về OpenCV – Nhóm 17 – Tuấn Lực – Thành Phú
6
Chọn Configuration Propertise
Linker
Input
Tại Addtional Dependencies Các bạn thêm các file sau:
T
C:\OpenCV2.2\lib\opencv_core220.lib C:\OpenCV2.2\lib\opencv_highgui220.lib C:\OpenCV2.2\lib\opencv_ml220.lib C:\OpenCV2.2\lib\opencv_imgproc220.lib C:\OpenCV2.2\lib\opencv_legacy220.lib Sau khi thêm xong là các bạn đã hoàn thành việc cấu hình OpenCV trên Visual Studio 2008 .
Cài đặt OpenCV trên Visual Sutdio 2010 Bạn thao tác như sau: Click chuột phải vào tên Project
Propertise
Thao tác thêm các thư viện như 2008. Sau khi thêm các thư viện tại: Include files và Library files xong chọn Configuration Propertise
Linker
Input
7
Tìm hiểu về OpenCV – Nhóm 17 – Tuấn Lực – Thành Phú Tại Addtional Dependencies Các bạn thêm các file sau: C:\OpenCV2.2\lib\opencv_core220.lib C:\OpenCV2.2\lib\opencv_highgui220.lib C:\OpenCV2.2\lib\opencv_legacy220.lib C:\OpenCV2.2\lib\opencv_ml220.lib C:\OpenCV2.2\lib\opencv_imgproc220.lib Sau khi thêm xong là các bạn đã hoàn thành việc cấu hình OpenCV trên Visual Studio 2010. Ghi chú: Đối với bản OpenCV2.2 hay OpenCV2.1 các bạn làm như nhau. Tuy nhiên khi thêm các file thư viện thì các bạn hãy vào thư mục C:\OpenCV2.x\lib\tenfile.lib Trong đó x là tên phiên bản, tenfile là tên của file. Ví dụ: thay tenfile = opencv_core220.lib
Một số hàm xử lí ảnh Đọc và hiển thị ảnh (Sử dụng thư viện: highgui.h) Trước khi hiển thị ảnh lên màn hình thì t hì chúng ta phải biết làm như thế nào để tải một đọc từ ổ đĩa. Chúng ta sẽ sử dụng hàm cvLoadImage(); IplImage* cvLoadImage( const char* filename, int
iscolor = CV_LOAD_IMAGE_COLOR
); filename: Tên đường dẫn ảnh iscolor: Chế độ hiển thị ảnh Một số giá trị của iscolor: CV_LOAD_IMAGE_GRAYSCALE CV_LOAD_IMAGE_ANYDEPTH CV_LOAD_IMAGE_UNCHANGED
Sau khi đã đọc được ảnh từ ổ cứng chúng ta sẽ hiển thị lên màn hình bằng hàm cvShowImage(); Đồng thời chúng ta phải tạo một cửa sổ hiển thị ảnh (Dùng hàm cvNamedWindow();) cvNamedWindow(“Tên cvNamedWindow(“Tên cửa sổ hiển thị”); void cvShowImage( const char*
name,
const CvArr* image );
8
Tìm hiểu về OpenCV – Nhóm 17 – Tuấn Lực – Thành Phú Name: Tên cửa số hiển thị ảnh Image: Tên ảnh
Chúng ta cùng làm một ví dụ cụ thể sau: #include "highgui.h" int main() { IplImage* img = cvLoadImage(imag); cvLoadImage(imag); // Tạo biến chứa ảnh cvNamedWindow("ShowIMG" cvNamedWindow("ShowIMG",CV_WINDOW_AUTOSIZE); ,CV_WINDOW_AUTOSIZE); // Tạo một cửa số hiển thị ảnh cvShowImage("ShowIMG" cvShowImage("ShowIMG",img); ,img); // hiển thị ảnh cvWaitKey(0); // Đợi người dùng nhập vào một phím bất kì cvReleaseImage(&img); // Giải phóng bộ nhớ chứa ảnh cvDestroyWindow("ShowIMG" cvDestroyWindow("ShowIMG"); ); // Đóng cửa sổ chứa ảnh }
Lưu ảnh void cvSaveImage( const char*
name,
const CvArr* image, const int* params CV_DEFAULT(0) ); #include "highgui.h" int main() { IplImage* img = cvLoadImage(imag); cvLoadImage(imag); // Tạo biến chứa ảnh cvNamedWindow("ShowIMG" cvNamedWindow("ShowIMG",CV_WINDOW_AUTOSIZE); ,CV_WINDOW_AUTOSIZE); // Tạo một cửa số hiển thị ảnh cvShowImage("ShowIMG" cvShowImage("ShowIMG",img); ,img); // hiển thị ảnh IplImage* out = cvCreateImage(cvGetSize(img cvCreateImage(cvGetSize(img),img->depth,img-> ),img->depth,img->nChannels); nChannels); cvConvertImage(img,out, CV_CVTIMG_FLIP); // Chuyển đổi ảnh cvSaveImage("D:/test.bmp" cvSaveImage("D:/test.bmp",img); ,img); // Lưu ảnh với một tên khác cvWaitKey(0); // Đợi người dùng nhập vào một phím bất kì cvReleaseImage(&img); // Giải phóng bộ nhớ chứa ảnh cvDestroyWindow("ShowIMG" cvDestroyWindow("ShowIMG"); ); // Đóng cửa sổ chứa ảnh }
Biến đổi ảnh
Lọc ảnh Tìm biên của ảnh
9
Tìm hiểu về OpenCV – Nhóm 17 – Tuấn Lực – Thành Phú
Một số hàm xử lí video Đọc và hiển thị Video từ một file f ile Đọc từ Camera Lưu file Video