Bài này mang tính chất thực hành ngắn gọn giúp các bạn có thể thực hiện một cách nhanh chóng qua từng bước.
Yêu cầu: (yêu cầu này gần như là tương tự với các phiên bản khác nhau)
- Windows 64bit, ở đây mình dùng Windows 10 (Windows 7 và 8 cũng OK)
- Visual Studio 2012 (mình đã thử với ver. 2008 cũng OK!)
- OpenCV 3.0.0 (phiên bản cũ hơn cũng không sao, mình đã thử với ver.2.4.10)
- Boost Library 1.59.0 và mới hơn (tác giả đã thử cả với phiên bản 1.57.0)
Cài đặt VS2012 (cái này thì không cần hướng dẫn nhỉ?!). Lưu ý: Ở phiên bản cũ hơn (2008), nếu không là phiên bản professional trở lên thì không thể bổ sung thêm thư viện (ví dụ với phiên bản thử nghiệm hoặc phiên bản dành cho sinh viên học tập).
Cài đặt OpenCV
Bạn có thể đọc bài dịch từ trang chủ OpenCV.org tại đây. Đây là bài hướng dẫn và giải thích rất đầy đủ và chi tiết, tuy nhiên nó… hơi dài. Trong trường hợp bạn muốn nhanh chóng thực hiện thì bạn có thể bỏ qua và thực hiện luôn theo những bước hướng dẫn dưới đây.
- Tải thư viện OpenCV về
- Giải nến vào một thư mục, ví dụ, mình giải nén vào C:/opencv
- Bổ sung vào System Variable biến OPENCV_DIR với giá trị là c:\opencv\build\x64\vc11 và System Path của hệ thống: %OPENCV_DIR%\bin
- Mở VS2012 và tạo một Solution Win32 C++ trống (empty) với tên gọi là “Test” chẳng hạn
- Nhấn chuột phải vào Solution ‘Test’, chọn Configuration Manager bên góc trên phải. Chọn Active solution platform > New và thay Platform từ ARM sang x64. Lưu thay đổi, quay trở lại Property Manager bạn sẽ thấy 2 thư mục thả xuống là Debug và Release cho phiên bản x64
- Click chuột phải vào Sub Solution “Test” vừa tạo trong thẻ Solution Explorer để mở Property Pages
- Chọn chế độ Debug
sau đó thự hiện 3 bước sau:- Trong C/C++ / General / Additional Include Directories, bổ sung
$(OPENCV_DIR)\..\..\include
- Trong Linker / General / Additional Library Directories bổ sung
$(OPENCV_DIR)\lib
- Trong Linker / Input / Additional Dependencies với Configuration = Active (debug), bổ sung
opencv_ts300d.lib
opencv_world300d.lib
- Trong C/C++ / General / Additional Include Directories, bổ sung
- Chọn chế độ Release và thực hiện tương tự 3 bước ở trên, riêng bước thứ 3 thì bỏ chữ “d” đi để chọn 2 file:
opencv_ts300.lib
opencv_world300.lib
Bây giờ, dự án (project) của bạn đã có thể chạy với thư viện OpenCV. Để kiểm tra, ấn chuột phải vào thư mục Source và chọn Add File, chọn file C/C++ với tên mặc định là Source.cpp và bổ sung đoạn code sau:
#include <cstdio>
#include <opencv2\opencv.hpp>
void main() {
std::cout << “ver ” << CV_VERSION << std::endl;
}
Build và chạy thử, nếu không xảy ra lỗi tức là bạn đã thành công trong việc cài đặt thư viện OpenCV cho project C/C++ 64bit.
Cài đặt Boost
- Tải về và giải nén thư viện Boost vào trong BOOST_DIR
- Nhấp đúp chuột vào tập tin bootstrap.bat để xuất ra tập tin bjam.exe (và b2.exe…) trong cùng một thư mục
- Mở MS Visual Studio với vai trò Administrator. Vào –
VS2012 > Tools > Visual Studio Command Prompt
- Tìm đến thư mục vừa giải nén thư viện Boost. và thực hiện lênh:
bjam --build-type=complete toolset=msvc address-model=64 stage
Nó sẽ mất khá nhiều thời gian, với mình nó vào khoảng 30 phút cho Virtual Machine Win7 x64 2Gb RAM, 15 phút cho Win8 x64 12Gb RAM.
- Click chuột phải vào Sub Solution (tên của dự án) để mở Trang Thuộc tính Property Pages lần nữa và bổ sung vào
Include Directories += BOOST_DIR
Library Directories += BOOST_DIR/stage/lib
Trong trường hợp của mình thì thư mục BOOST_DIR ở đây tương ứng với C:/boost_1_59_0, và đường dẫn này được lưu trong biến môi trường BOOST_DIR.
Như vậy là xong! Chúc mừng bạn đã cài đặt thành công thư viện Boost.
Kiểm tra kết quả
Bây giờ bạn có thể viết một vài đoạn code để kiểm tra xem các thư viện OpenCV và Boost hoạt động như thế nào.
Hãy thêm file main.cpp vào thư mục Source Files Folder của dự án của chúng ta với đoạn code sau:
[cpp]
#include <opencv2\opencv.hpp>
#include <boost\regex.hpp>
using namespace cv;
using namespace std;
int main(int argc, const char** argv) {
std::string line;
boost::regex pat( “^Subject: (Re: |Aw: )*(.*)” );
//while (std::cin) {
std::getline(std::cin, line);
boost::smatch matches;
if (boost::regex_match(line, matches, pat))
std::cout << matches[2] << std::endl;
//}
Mat img = imread(“1.jpg”, CV_LOAD_IMAGE_UNCHANGED);
if (img.empty()) {
cout << “Error: Image cannot be loaded…!” << endl;
system(“Pause”); //wait for a key pressed
return -1;
}
namedWindow(“MyWindow”, CV_WINDOW_AUTOSIZE);
imshow(“MyWindow”, img);
waitKey(0);
destroyWindow(“MyWindow”);
return 0;
}
[/cpp]
Biên dịch và Chạy ví dụ đơn giản này (đừng quên bổ sung ảnh 1.jpg vào thư mục của chương trình). Gõ bất cứ thứ gì bạn muốn để thấy thư viện Regex của Boost làm việc, sau đó chương trình sẽ hiển thị ảnh sử dụng thư viện OpenCV.
Note:
Bạn có thể cần phải vào Configuration Properties->C/C++->PreProcessor để bổ sung thêm:
_WIN32_WINNT=0x0501
Nếu bạn gặp thông báo Cannot find or open the PDB file khi biên dịch như hình dưới:
lúc đó, bạn có thể vào TOOLS/Options/Debugging/General và chọn Load dll exports (Native only):
Tham khảo:
- http://astra.ua.ac.be/wiki/index.php/How_to_build_Boost_libraries
- http://wiki.thedarkmod.com/index.php?title=Compile_the_static_Boost_Libraries_in_Windows
bạn ơi mình đang làm đồ án về điều khiển chuột bằng mắt…cài đặt phần mềm boot có tác dụng gì vây?