OpenCV setting for Visual Studio 2010 – Hướng dẫn thiết lập OpenCV để chạy với Visual Studio 2010

Update ngày 24/04/2014: Bản OpenCV chính thức mới nhất version 2.4.9 đã được tung ra. Có thể download bản dành cho Windows ở đây. Các điểm mới và các lỗi được sửa có thể xem ở đây.

Update ngày 31/12/2013: Bản OpenCV chính thức mới nhất version 2.4.8 đã được tung ra. Có thể download bản dành cho Windows ở đây. Các điểm mới và các lỗi được sửa có thể xem ở đây.

Update ngày 12/11/2013: Bản OpenCV chính thức mới nhất version 2.4.7 đã được tung ra. Có thể download bản dành cho Windows ở đây.

Update ngày 06/11/2013: Bản OpenCV 3.00 (version number đã được thay đổi từ 2.9.0 thành 3.00 được một thời gian) đã được cập nhật. Một số module mới được thêm vào như: androidcamera, matlab, optim, shape, viz … ngoài ra, các module GPU trước đây hầu hết bị đổi thành CUDAxxx (như cuda, cudaarithm, cudafilters …). Nếu không muốn dùng module nào, có thể sửa file CMakeLists.txt để VS không build module đó trong quá trình dịch (ví dụ như Python, Matlab …). Cũng có thể tăng tốc quá trình dịch nhanh lên đáng kể (trong trường hợp có dùng các module CUDA) bằng cách chỉ dịch các code cho CUDA version từ 2.0 trở lên (bỏ các version 1.1, 1.2 và 1.3).

Update ngày 13-08-2013: Bản OpenCV 2.9.0 (các nhà phát triển OpenCV đã quyết định đổi version từ 2.4.9 thành 2.9.0) đã được cập nhật. Các thay đổi chính gồm có: các phần liên quan tới GPU (thêm module cudev), thêm thư viện opencv_bioinspired290 (các hàm liên quan tới retinal filter), và các sửa lỗi khác. Quá trình biên dịch cũng không có gì đáng chú ý so với bản 2.4.9.

Update ngày 09-06-2013: Ngày 07/06/2013 bản OpenCV 2.4.9 với phần GPU đã được chia nhỏ thành các libraries bé hơn đã được update. Bản này build mất khoảng 5h trên cấu hình Laptop 2 Core 2.4 Ghz, Windows 7 SP1 32 bit. Và kết quả thật là hoàng tráng: một thư mục khoảng gần 5 Gb. Không có lỗi nào trong quá trình biên dịch với Visual Studio 2010 SP1 32 bit và CUDA 5.0, tuy nhiên người dùng vẫn phải tương tác trong quá trình dịch (đồng ý update cấu hình của các Project) và tự build project INSTALL để có thư mục include.

Update ngày 21-05-2013: Tự build OpenCV 2.4.9 (bản chính thức hiện tại là 2.4.5) với Visual Studio 2010, CUDA 5.0 từ source code (rất không khuyến khích cho những ai mới bắt đầu với OpenCV hoặc chưa đủ công lực-để chờ đợi và sửa các lỗi phát sinh, tất nhiên nếu không có thư viện CUDA cài trên máy thì thời gian compile cũng không có gì đáng nói). Sau một thời gian tìm hiểu CUDA, một điều ngạc nhiên là tại sao trước đây mình lại thờ ơ với nó thế, trong khi hiệu năng mà nó mang lại cho lĩnh vực xử lý và phân tích hình ảnh (Image processing and Analysis) quả là rất lớn. Nhân tiện build lại OpenCV 2.4.9 nên viết một vài chia sẻ lên đây cho những ai quan tâm. Điều đầu tiên cần biết là hoàn toàn có thể lập trình CUDA mà không cần có một máy tính có card đồ họa CUDA của Nvidia, nhưng muốn chạy chương trình thì cần. Điều thứ hai là bên cạnh CUDA còn có thư viện AMP của AMD cũng là một thư viện lập trình GPU (Graphics Processing Unit) hoặc OpenCL (một nền tảng nhắm đến việc sử dụng song song cả CPU và GPU) nhưng theo kinh nghiệm bản thân tôi (đã thử AMPOpenCL) thì AMP khá là rối rắm (trong khi CUDA đơn giản hơn) và cái gì viết bằng OpenCL thì cũng chạy được trên CUDA. Vì hai nguyên nhân trên, CUDA là lựa chọn lý tưởng hơn cả.

Đầu tiên muốn build OpenCV from source, bạn download OpenCV từ link trên, sau đó giải nén vào một thư mục, chẳng hạn như D:\OpenCV chẳng hạn. Tiếp đến bạn download cmake về, cài đặt bình thường (lưu ý lựa chọn add đường dẫn của Cmake vào biến môi trường của hệ thống). Tiếp đến chạy command.com, chuyển tới thư mục D:\OpenCV, gõ lệnh mkdir build, tiếp đến cd build và gõ lệnh cmake -D:CMAKE_BUILD_TYPE=RELEASE D:\OpenCV. Chờ một lát để cmake detect các tool của hệ thống và sinh ra file solution cho Visual Studio, lưu ý là cmake sẽ tự tìm bộ cài Visual, Python, CUDA trên máy của bạn nên những thứ này cần được cài đặt và cấu hình trước (cũng không có gì phức tạp), nếu không thì các phần thư viện dành cho Python, CUDA sẽ không được build. Với Python, hiện nay OpenCV chỉ hỗ trợ bản 2.7 trở xuống. Tiếp đến các file sẽ được sinh ra trong thư mục build. Bạn thoát khỏi command.com và vào thư mục build, mở file OpenCV.sln và build với Visual Studio 2010, lưu ý là phần compile của CUDA sẽ rất lâu (xem lý do ở đây). Có một lỗi unknown identifier ASSERT trong file steoreocsbp.cpp của GPU, sửa bằng cách thêm lệnh #include <assert.h> vào đầu file này. Nếu không có lỗi gì khác, bạn sẽ có các file của thư viện OpenCV 2.4.9 trong thư mục D:\OpenCV\build\bin\Release để lập trình. Lưu ý là file opencv_gpu249.dll có kích thước khá lớn (>324 Mb).

OpenCV, bản hiện tại là 2.4.0 beta 2, bản ổn định là 2.3.1 là một thư viện được dùng khá phổ biến cho các ứng dụng của Computer Vision và Image Processing. Với các môi trường Linux và Unix based thì việc thiết lập cấu hình để lập trình với OpenCV là khá đơn giản. Tuy nhiên với Visual Studio 2010 thì khá rối rắm. Trong bài viết này tôi sẽ hướng dẫn một cách đơn giản nhất các bước để có thể sử dụng OpenCV 2.4.0 beta 2 với Visual Studio 2010.
1) Download bản OpenCV về máy tính của mình, sau đó giải nén thành thư mục opencv (chẳng hạn trên ổ D:\). Ta có thư mục D:\opencv chứa các file cần thiết của thư viện.
2) Xóa bỏ một số phần không dùng đến trong thư mục buildbuild\common\tbb: chẳng hạn như phần Python, GPU (lớn nhất), x64, vc9 và staticlib. Chỉ cần giữ lại thư mục common, include, x86\vc10 (hai thư mục con là bin và lib) là đủ. Sau khi thực hiện thao tác này cả thư mục opencv của bạn chỉ còn khoảng hơn 300 Mb. Nhỏ hơn nhiều so với 2Gb ban đầu (lúc mới giải nén OpenCV).
3) Thiết lập đường dẫn môi trường của Windows: thêm hai đường dẫn D:\opencv\build\x86\vc10\bin (chứa file .dll của OpenCV) và D:\opencv\build\common\tbb\ia32\vc10 (chứa file .dll của TBB) vào biến môi trường system path của Windows.
4) Tạo hoặc mở một project bất kỳ với Visual Studio, vào mục Property Mangager, kích đúp chuột lên mục Debug và nhấn chuột phải lên mục Microsoft Cpp Win32 như hình sau:


Trong cửa sổ hiện ra, ở mục VC++ Directories, phần Include files, thêm đường dẫn D:\opencv\build\include vào cuối, trong mục Library files, thêm đường dẫn D:\opencv\build\x86\vc10\lib vào cuối.
Trong mục Linker, phần Input, mục Addtional Dependencies, thêm các file sau vào:opencv_legacy240.lib;opencv_core240.lib;opencv_features2d240.lib;opencv_highgui240.lib;opencv_calib3d240.lib;opencv_imgproc240.lib;
opencv_objdetect240.lib;opencv_video240.lib;opencv_haartraining_engine.lib

Đến đây là xong bước cấu hình, thoát khỏi Visual Studio, chương trình sẽ hỏi bạn có muốn lưu lại cấu hình không, nhấn vào Yes và bắt đầu lập trình. Một số ví dụ cơ bản về OpenCV với Visual Studio có thể tìm thấy tại OpenCV Tutorials.
Lưu ý: Nên đặt thư mục chứa OpenCV là opencv vì sẽ ít phải sửa cấu hình khi thay đổi các phiên bản OpenCV khác nhau (chỉ cần thay tên các file .lib theo số phiên bản) và nên xóa các thứ không cần thiết để đỡ tốn bộ nhớ.
Một số bài viết khác về cùng chủ đề:
Link 1
Link 2
Link 3

4 Responses to “OpenCV setting for Visual Studio 2010 – Hướng dẫn thiết lập OpenCV để chạy với Visual Studio 2010”

  1. Một vài vấn đề trong lập trình với OpenCV | Angels fall first Says:

    […] khi đó cần build OpenCV from source để có thể dùng các hàm này. Xem hướng dẫn ở đây với bản OpenCV […]

  2. Kasey Says:

    I think what you published made a ton of sense. However,
    think on this, suppose you composed a catchier title?
    I ain’t suggesting your content isn’t solid., however suppose you added something to maybe get people’s attention? I mean OpenCV setting for Visual Studio 2010 – Hướng dẫn thiết lập OpenCV để chạy với Visual Studio 2010 | Angels fall first is a little boring. You might look at Yahoo’s home page and watch how they
    write news titles to get viewers to click.
    You might try adding a video or a picture or two to get people excited about what you’ve got to say. Just my opinion, it might bring your blog a little bit more interesting.

  3. Van Says:

    I’d like to thank you for the efforts you have put in penning this website. I really hope to see the same high-grade blog posts by you in the future as well. In truth, your creative writing abilities has encouraged me to get my very own website now😉


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: