Để lập trình sử dụng thư viện xử lý ảnh OpenCV, các bạn nên cài đặt thư viện này trước khi tiến hành thiết lập các property cần thiết cho project
Trang 1ĐẠI HỌC KHOA HỌC TP HỒ CHÍ MINH KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN KHOA HỌC MÁY TÍNH
HƯỚNG DẪN SỬ DỤNG THƯ VIỆN OPENCV
Biên soạn: Nguyễn Trọng Việt Email: ntviet@fit.hcmus.edu.vn
A Giới thiệu
Để lập trình sử dụng thư viện xử lý ảnh OpenCV, các bạn nên cài đặt thư viện này trước khi tiến hành thiết lập các property cần thiết cho project Tôi có gởi kèm gói cài đặt thư viện OpenCV trong course hướng dẫn này
Trang 2B Các bước thiết lập để sử dụng OpenCV với Visual C++:
Tôi lấy project Demo2 và Demo3 gửi kèm làm ví dụ Trong project của mình các bạn cũng thiết lập tương tự
1 Sao chép các module thư viện cần thiết
Các bạn vào thư mục cài đặt OpenCV và sao chép các thư mục: cv, cvaux, cxcore, otherlibs, lib vào thư mục chứa source chương trình của mình Trong đó, các thư muc cv, cvaux, cxcore, otherlibs chứa các file h và cpp quan trọng của thư viện, thư mục lib chứa các thư viện lib cần thiết khác
Riêng thư mục bin chứa các dll cần thiết khác bao gồm: cv100.dll, cvaux100.dll, cxcore100.dll, highgui100.dll, libguide40.dll Bạn sẽ chép các dll này vào cùng vị trí với tập tin thực thi exe của
mình
Trang 32 Vào ProjectDemo1 Properties …
3 Dialog Property Pages của project hiện lên, các bạn lần đến Configuration Properties
C/C++ General như hình sau:
Trang 4Trong mục Additional Include Directories, các bạn đưa vào đường dẫn đến thư mục chứa các file h
của thư viện OpenCV Trong trường hợp của Demo2 và Demo3, do tôi đặt thư mục OpenCV trong cùng
thư mục Project chương trình, nên chỉ cần đưa vào tên của các thư mục: cv/Include, cvaux/Include,
cxcore/Include, otherlibs/highgui Chú ý dấu “;” giữa các tên thư mục khi nhập vào
4 Tiếp tục lần đến Configuration Properties C/C++ Linker General như hình sau:
Trang 5Trong mục Additional Library Directories: các bạn đưa vào đường dẫn đến thư mục có chứa file
.lib của thư viện Với OpenCV thì các file lib này được đặt trong thư mục lib nên các bạn nhập vào lib
5 Lần đến Configuration Properties C/C++ Linker Input như hình sau:
Trong mục Additional Dependencies: các bạn nhập vào tên file lib cần thiết gồm: cv.lib, cvaux.lib,
highgui.lib, cxcore.lib
6 Cuối cùng, các bạn lần đến Configuration Properties General
Kiểm tra xem mục Character Set và đặt về No set
Trang 67 Thiết lập xong, click OK rồi thực hiện biên dịch lại project để có hiệu lực cho project Sau đó,
chép file cv100.dll, cvaux100.dll, cxcore100.dll, highgui100.dll, libguide40.dll vào cùng vị trí với
tập tin thực thi exe của project
C Lập trình với OpenCV
Sau khi thiết lập đầy đủ như trên, project của các bạn đã sẵn sàng cho việc lập trình sử dụng thư viện OpenCV
1 Trước hết là phần lập trình với OpenCV trong Console, cần include các thư viện cần thiết của OpenCV vào chương trình (tham khảo demo2)
Trang 7Thực hiện cài đặt như hình sau
Trong đó:
IplImage : Là cấu trúc lưu trữ thông tin ảnh (gồm chiều rộng, chiều cao, số kênh màu, dữ liệu
ảnh đã giải nén, …)
cvLoadImage : Là hàm load và giải nén ảnh từ file, thông tin về ảnh và kết quả giải nén được đặt
vào biến con trỏ kiểu cấu trúc IplImage
cvNamedWindow : Là hàm tạo cửa sổ của OpenCV, dùng tên làm định danh cho từng cửa sổ, trong
trường hợp này tên cửa sổ là My Window cvShowImage : Là hàm dùng để gắn ảnh đã giải nén vào cửa sổ được xác định bằng tên định danh
cvWaitKey : Là hàm chờ nhận một phím bất kì từ bàn phím để tiếp tục các đoạn chương trình
sau đó
cvReleaseImage : Là hàm hủy dữ liệu ảnh
cvDestroyWindow : Là hàm hủy cửa sổ thông qua tên định danh của cửa sổ
Biên dịch và thực thi, nhận được kết quả như sau:
Trang 82 Lập trình với OpenCV kết hợp MFC (tham khảo Demo3)
- Include các tập tin cần thiết của OpenCV như đối với ứng dụng trên console
- Khai báo biến con trỏ IplImage, và khởi tạo giá trị NULL trong Constructor của lớp giao diện
Trang 9- Thực hiện load và giải nén dữ liệu ảnh từ file:
- Để hiển thị ra màn hình giao diện tại vị trí mong muốn, các bạn bổ sung một số lệnh chương trình trong hàm OnPaint như sau:
Trong đó CvvImage là lớp có sẵn của OpenCV phục vị việc vẽ ảnh lên một khung hình chữ nhật cho trước Hàm CvvImage::CopyOf thực hiện việc sao chép dữ liệu ảnh muốn vẽ, hàm CvvImage::DrawToHDC thực hiện vẽ ảnh đã copy tại một khung chữ nhât RECT cho trước
Trang 10Các bạn cần tham khảo các field quan trọng của cấu trúc IplImage và các hàm quan trọng khác trong phần hướng dẫn kèm theo của gói cài đặt OpenCV
Các bạn tham khảo chi tiết các hàm và cấu trúc quan trọng tại các link sau:
Trang 11Chúc thành công