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ễ...

Phân biệt biến kiểu Property, Public, Protected, Private trong ngôn ngữ Objective C

- Theo kinh nghiệm làm việc của mình với các bạn trong nhóm khi lập trình Objective-C và cũng đọc qua code của những project cũ. Ít khi nào mọi người để ý và khai báo đúng với ý đồ của từng đối tượng, và vi phạm quy tắc tính đóng gói, tính bảo mật thông tin của đối tượng trong lập trình hướng đối tượng (Tham khảo lý thuyết Lập trình hướng đối tượng tại trang Wiki ). - Theo ngôn ngữ lập trình Java, người ta khuyến khích mỗi khi dùng biến kiểu public thì nên đặt 1 biến private và hỗ trợ những hàm getter/setter để truy suất biến private đó.     + Nguyên nhân họ nói là đảm bảo tính đóng gói, và nếu sau này có thay đổi gì trên biến đó bạn có thể sửa được dễ dàng, chi tiết về vấn đề này ở đây .     + Nói tóm tại thì nguyên nhân chính là có thể kiểm soát được truy xuất đến giá trị của 1 đối tượng từ bên ngoài, có thể dễ dàng mở rộng code bằng cách override lại những hàm getter/setter. - Các bạn có thể áp dụng nguyên tắc đó từ bên Java qua ngôn ngữ lập trình Object...

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,... ).