Skip to main content

Hướng dẫn cài đặt OpenCV trên MacOS và chạy ví dụ mẫu bằng terminal và XCode

OpenCV (Open Source Computer Vision) là thư viện mã nguồn mở chuyên xử lý, phân tích những hình ảnh từ photo và camera như nhận diện khuôn mặt, chữ số, hình học... OpenCV được phát hành dưới mã nguồn BSD license, do đó được sử dụng miễn phí trong việc nghiên cứu cũng như thương mại. Nó có những interface cho ngôn ngữ C++, C, Python và Java, do đó nó có thể chạy trên đa nền tảng như Windows, Linux, Mac OS, iOS và Android. Chi tiết các bạn có thể xem thêm trên trang của OpenCV.

Tài liệu hướng dẫn chi tiết những chức năng trong OpenCV các bạn có thể xem qua tại đây. Khi xem những hướng dẫn này các bạn cần phải chạy những đoạn code ví dụ mẫu của người ta viết để có thể hiểu rõ cách người ta thực thi công thức toán học đó thông qua code như thế nào và kết quả khi chạy ra sao thì các bạn phải build và run chương trình.

Bài này mình hướng dẫn các bạn cài thư viện OpenCV 3.1.0, build và chạy thử code ví dụ mẫu C++ từ Github OpenCV bằng terminal và XCode. Vì mình thấy trên mạng có hướng dẫn cài bản 3.0.0, nhưng mình cài thử máy tính cá nhân của mình thì gặp sự cố với ffmpeg, nếu các bạn cài bản này, nếu gặp lỗi như vậy có thể đọc tài liệu này để fix problem khi cài đặt OpenCV 3.0.0.


Hướng dẫn cài đặt OpenCV 3 trên Mac OS 10.11:

Các bạn có thể clone source code từ git hoặc có thể tải source code của OpenCV 3.1.0 về máy trước khi build và install chúng vào máy tính thông qua lệnh CMake. Các bạn có thể dùng brew cũng được nhưng phải thiết lập khác chút xíu.

Nếu các bạn clone bằng terminal xong thì nên di chuyển đến thư mục chứa git opencv, dùng lệnh checkout phiên bản release version 3.1.0 như sau:
git checkout tags/3.1.0

Theo mình thấy các bạn nên cài OpenCV bằng CMake thông qua MacPort. Nếu các bạn chưa cài MacPort thì có thể tải tại đây. Sau khi cài xong bạn mở terminal và nhập đoạn lệnh sau để cài CMake:
sudo port install cmake

Hướng dẫn build bằng CMake:

- Bạn dùng terminal cd đến thư mục opencv, và đánh những lệnh như sau:
# Tạo thư mục riêng để build opencv
mkdir build
cd build
cmake -G "Unix Makefiles" ..
- Bây giờ chúng ta bắt đầu build OpenCV bằng những lệnh:
make -j8
sudo make install

Khi cài đặt xong bạn sẽ thấy thư mục opencv trong đường dẫn usr/local/include.
hoặc dùng terminal:

Các bạn vào đường dẫn này và tải file cpp và 2 hình bên trong đó bỏ cùng 1 thư mục.

Hướng dẫn build và chạy code ví dụ viết bằng C++ dùng thư viện OpenCV bằng Terminal:

Để build bằng terminal thì bạn cần dùng pkg-config để build. Đầu tiên bạn phải chạy lệnh sau:
pkg-config --cflags --libs opencv

Bạn cd đến thư mục chứa những file đó và chạy đoạn lệnh sau:
g++ -ggdb `pkg-config --cflags --libs opencv` AddingImagesTrackbar.cpp -o AddingImagesTrackbar
./AddingImagesTrackbar
Sau khi chạy sẽ xuất hiện màn hình như sau:

Lưu ý: Nếu bạn gặp error khi build như sau:
"/usr/bin/ld: cannot find -lippicv

collect2: error: ld returned 1 exit status"
Bạn nên vào link này tải lippicv về. Sau khi tải xong giải nén và copy file .a vào thư mục "/usr/local/lib".

Hướng dẫn thiết lập XCode để viết code C++ với OpenCV:

- Bước 1: Bạn mở XCode và chọn trên thanh toolbar như: File > New > Project > OS X (Application) > Command Line Tool:

Bạn đặt tên Project và chọn ngôn ngữ là C++:

- Bước 2: Bạn copy code ví dụ vào file main.cpp thì sẽ xuất hiện error như sau:

Hiện tại bạn có thể viết code C++ trên XCode nhưng chỉ dùng thư viện mặc định. Nếu bạn muốn XCode nhận thư viện OpenCV thì phải config như sau:

- Bước 3: Bạn vào "Build Setting". Nhập "/usr/local/include" vào phần "Header Search Paths":

Nhập "/usr/local/lib" vào phần "Library Search Paths":

Copy đoạn code sau vào phần "Other Linker Flag"
-lopencv_calib3d -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lopencv_ml -lopencv_objdetect -lopencv_photo -lopencv_shape -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videoio -lopencv_videostab

Sau đó bạn chạy build bằng XCode hoặc Command+B:

Bạn build thành công bạn muốn tìm đến thư mục build thì bạn chọn Project và trỏ đến thư mục Debug.

Nếu bạn muốn XCode tạo file build ngay tại thư mục chứa file project thì chọn XCode > Preference > Location:

Nhấn vào Advanced và chọn Legacy:

Sau đó bạn build lại project và sẽ thấy thư mục build ngay tại thư mục project, copy 2 tấm hình vào thư mục Debug và chạy file bằng lệnh "./OpenCVCpp" sẽ xuất hiện màn hình như hình sau:

Theo mình thì các bạn build những code sample của OpenCV thì dùng terminal, còn khi nào muốn viết code thì nên dùng tool XCode để viết và build và run cho thật nhanh ^^.

Chúc các bạn thành công và học OpenCV thật tốt nha.

Tài liệu OpenCV.

Tài liệu tham khảo:

- OpenCV on MacOSX.
- Compile OpenCV sample code.
Setup XCode 6.1 to work with OpenCV3 libraries
- OpenCV installation.

Comments

Popular posts from this blog

So sánh những framework hỗ trợ viết ứng dụng trên SmartPhone

Khi lập trình trên SmartPhone bạn không nhất thiết phải học những ngôn ngữ đặc thù trên từng loại hệ điều hành thì mới có thể lập trình được. Ví dụ như muốn lập trình trên iOS thì phải học ngôn ngữ Objective-C hay Swift, muốn lập trình được trên Android thì học ngôn ngữ Java, muốn lập trình trên WinPhone thì học ngôn ngữ C#. Hiện nay có rất nhiều những framework giúp đỡ cho các bạn rất nhiều khi các bạn muốn viết trên nhiều nền tảng smartphone bằng ngôn ngữ mà bạn yêu thích. Theo mình thấy thì hiện nay có 3 loại như: Native App, Hybrid Mobile App, Native Cross-Platform App. 1. Native App: là những ứng dụng sử dụng những framework và ngôn ngữ lập trình của hệ thống cung cấp sẵn. Ví dụ như bạn muốn lập trình iOS thì phải cài XCode, học ngôn ngữ Objective-C hay Swift, lập trình Android thì cài Android Studio và học ngôn ngữ Java. - Ưu điểm: Hiệu năng thực thi ứng dụng trên nền tảng nhanh và hiệu quả. Không bị phụ thuộc vào bên thứ 3. Khi phát hành ứng dụng trên những Mobile Store cũng dễ...

Hướng dẫn dùng Serverless sử dụng Lambda AWS

1. Lambda function là gì? AWS Lambda cho phép bạn chạy mã mà không cần cung cấp hay quản lý máy chủ. Bạn chỉ phải trả tiền cho thời gian xử lý thông tin đã sử dụng. Với Lambda, bạn có thể chạy mã cho gần như toàn bộ các loại ứng dụng hay dịch vụ backend – tất cả đều không cần quản trị. Chỉ cần tải đoạn mã của bạn lên và Lambda sẽ lo hết những gì cần làm để chạy và mở rộng mã của bạn với mức độ có sẵn cao. Bạn có thể thiết lập mã của bạn tự động kích hoạt từ các dịch vụ AWS khác, hoặc gọi trực tiếp từ bất cứ ứng dụng web hay di động nào. Chi phí chạy trên lambda function rẻ so với chi phí bạn mua 1 con server, duy trì và quản trị nó ( ví dụ như bạn phải xử lý bất đồng bộ những request, khi lượng user bạn tăng đột biến bạn phải có cơ chế auto scale, chứ không thì server bị sẽ bị treo, khi server bị treo bạn phải tự động khởi động lại sẽ mất thời gian,... ).

(Kinh nghiệm) Về static library và static framework trên iOS

Trước XCode 6 ra đời thì đa số mọi người muốn viết những code chung trong static library để có thể dùng cho nhiều project. Có những người tạo project là static library nhưng khi build thì tạo folder có đuôi là .framework để add những file header và static library vào. Nhưng thực chất nó cũng chỉ là static library. Vì khi bạn muốn tích hợp những static library khác vào project static library mà bạn đang làm thì sẽ gặp nhiều vấn đề xảy ra. Vì thế khi bạn làm project framework mà có tích hợp những static library khác vào thì nên khởi tạo project theo dạng framework (Cocoa Touch Framework) như sau: Bạn có thể xem hướng dẫn từng bước tạo framework và tích hợp framework đó vào project tại đây . PS: Nếu bạn không muốn viết kiểu này thì chỉ có thể tích hợp nhiều static library trong application project. Hoặc có thể viết static library tích hợp vào cocoapods để tích hợp và update cho thuận tiện, có thể tham khảo cách làm tại đây .