20/4/13

Hướng dẫn sử dụng thư viện OpenCV Eclipse


Hướng dẫn sử dụng thư viện OpenCV

OpenCV là một thư viện mã nguỗn mở rất mạnh hỗ trợ cho việc xử lý ảnh cũng như các vấn đề liên quan đến thị giác máy tính (Computer Vision).
Tron bài này tôi sẽ hướng dẫn cách sử dụng thư viện OpenCV cho việc lập trình trên ngôn ngữ C/C++ trong môi trường Visual Studio và Eclipse.
Trước hết các bạn download thư viện OpenCV về. Hiện có nhiều phiên OpenCV khác nhau, các bạn nên download bản mới nhất về dùng, Ở đây tôi giả sử đang dùng bản 2.3.1. Tiếp theo các bạn cài đặt thư viện lên, việc cài đặt ở đây thực chất là giải nén thư viện OpenCV vào một thư mục nào đó, các bạn cài đặt như bình thường, ở đây tôi giả sử là cài vào thư mục C:\. Sau khi cài đặt ta sẽ có thư mục C:\opencv và bên trong có rất nhiều thư mục con.
Sử dụng OpenCV với Eclipse CDT và trình dich MinGW GCC.
Từ cửa sổ Eclipse chọn New -> C++ Project , hộp thoại C++ Project xuất hiện, trong hộp thoại ta chọn Project name là opencv, Project type là Hello World C++ Project, Toolchains là MinGW GCC.



Chọn Finish và ta có một Project mới. OK, bây giờ configure cho project này hoạt động được với OpenCV
Trong cửa sổ của Eclipse chọn Project ->Properties, cửa sổ Properties hiện ra. Tron cửa sổ Properties chọn C/C++ Build->Settings. Trong tab Tool Settings. Ở phần GCC C++ Compiller chọn Include rồi dẫn đường dẫn tới mục Include của OpenCV là C:\opencv\build\include. Trong phần MinGW C++ Linker chọn Library và chọn các mục như sau: click vào dấu cộng ở Library search path (-L) và dẫn tới thư mục lib: C:\opencv\build\x86\mingw\lib đối với Windows 32 bit hoặcC:\opencv\build\x64\mingw\lib đối với Windows 64 bit. Tiếp đó click vào dấu "cộng" để thêm Library(-I) vào, các library cần thêm lần lượt là: opencv_core231, opencv_highgui231, opencv_imgproc231 ... nói chung là tùy vào nhu cầu sử dụng có thể thêm một hoặc nhiều lib vào.


Nhấn OK để hoàn thành, như vậy là configure xong, bây giờ là viết một chương trình đơn giản là load và hiển thị một ảnh từ máy tính.
Trong file opencv.cpp thêm vào header : #include <opencv2/opencv.hpp> . Việc thêm header này vào sẽ tự động thêm tất cả các thư viện của opencv vào trong project. Tuy nhiên các bạn cũng có thể thêm thủ công vào project của mình bằng cách thêm các thư viện #include <opencv2/core/core.hpp>#include <opencv2/imgproc/imgproc.hpp> ...
Toàn bộ chương trình đơn giản như sau : 

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;

int main() {
    cout << "The first program in opencv" << endl;
    IplImage *img = cvLoadImage("D:\\Test\\test.jpg", CV_LOAD_IMAGE_COLOR);
    cvNamedWindow("Test", CV_WINDOW_NORMAL);
    cvShowImage("Test", img);
    cvReleaseImage(&img);
    return 0;
}


Chương trình đã hoàn tất, tuy nhiên lúc này để chạy được ta cần copy các file DLL trong thư mục C:\opencv\build\x86\mingw\bin vào thư mục chứa file chạy (opencv.exe) hoặc vào trong thư mục C:\WINDOWS\system32. 
Giờ thị build và chạy chương trình, ta sẽ thấy một cửa sổ ảnh Test hiện ra. Ok, xong phần với eclipse. 

Sử dụng OpenCV với Visual Studio

Phiên bản Visual studio sử dụng ở đây là phiên bản Visual studio 2010, các version trước các bạn có thể cấu hình một cách tương tự.
Tạo một project mới: New > Project, trong cửa sổ New Project chọn Visual C++, Win32 console application. Đặt tên project là opencv


Nhấn OK, Next, Finish và ta có một project mới. Bây giờ vào Project > Properties hoặc nhấn Alt + F7 để mở hộp thoại property. Hộp thoại opencv property page hiện ra, Trong mục Visual C++ Directories, chọn Include Directories, dẫn tới đường dẫn chứa thư mục include của opencv, ở đây là C:\opencv\build\include

Tương tự như vậy, trong mục Lybrary Directories chọn đường dẫn tớiC:\opencv\build\x86\vc9\lib
Trong mục Liker > Input > Additional Dependence ta thêm vào các lib:opencv_core231.lib,
opencv_imgproc231.lib, opencv_highgui231.lib
 ... Tùy vào mục đích chương trình mà ta có thể thêm nhiều hoặc tất cả các lib vào.

Để máy tính có thể chạy được chương trình ta cần phải chỉnh phần PATHenvironment variable, tuy nhiên để đơn giản tôi thường copy hêt các file *.dll trong thư mục C:\opencv\build\x86\vc9\bin vào thư mục C:\Windows\System32 hoặc vào thư mục chứa file chạy (opencv.exe) trong project để có thể chạy được trên máy khác khi copy thư mục bin của project từ máy mình sang máy khác.
Cài đặt xong, bây giở viết chương trình đơn giản load ảnh và hiển thị ảnh:

#include "stdafx.h"
#include <opencv2/opencv.hpp>

int _tmain(int argc, _TCHAR* argv[])
{
    IplImage *src = cvLoadImage("D:\\Temp_work\\opencvgiude2.jpg", CV_LOAD_IMAGE_COLOR);
    cvNamedWindow("a", 1);
    cvShowImage("a", src);
    cvWaitKey(10);
    return 0;
}
OK, giờ thì build và chạy chương trình, ...

Bài đăng phổ biến