OpenCV

Cấu trúc opencv

Cấu trúc OpenCV

Sau khi make OpenCV từ source code thành công sẽ được solution OpenCV. Bài này sẽ mô tả các công dụng các project bên trong OpenCV để các bạn include vừa đủ. Không thừa không thiếu, mọi thứ vừa đủ là tốt nhất.

Nếu tự make OpenCV bằng Cmake không thành công các bạn có thể sử dụng source mình đã make sẵn.

OpenCV 3.2.0 build cho Visual Studio 2015
OpenCV 3.4.2 build cho Visual Studio 2015

opencv

Share thư viện OpenCV 3.4.2 build sẵn

OpenCV là thư viện mã nguồn mở, cung cấp cho nhiều ngôn ngữ & platform khác nhau. Người dùng download về rồi dùng Cmake để build phiên bản phù hợp nhất để sử dụng. Như là Visual Studio 2013, 2015, 2017, x86 hoặc x64,… sao cho phù hợp.

Có nhiều bạn gặp rắc rối khi build OpenCV do có quá nhiều option, do đó mình mình share bản Visual Studio 2015. Bản này là bản mình đang sử dụng và thấy rằng khá phổ biến với mọi người.

Download

Download (Github)

Tạo ứng dụng OpenCV bằng C#

Bạn thích viết 1 project bằng C# vì nó dễ thiết kế giao diện, các API thân thiện, dễ sử dụng. Tuy nhiên OpenCV không hỗ trợ C#, do đó để có thể sử dụng các tính năng trong OpenCV có nhiều phương pháp, phổ biến nhất hiện nay là dùng EmguCV. EmguCV là thư viện wrapper chuyển đổi tất cả các hàm của openCV từ C++ sang .NET. Tuy nhiên nó có nhiều nhược điểm: tốc độ xử lý chậm, bắt buộc người dùng phải include tất cả file dll dung lượng lớn.

c922

Đọc hình ảnh từ webcam trong opencv

Webcam là thiết bị input phổ biến nhất, rẻ tiền nhất so với các loại camera khác. Tầm 150k là đã mua được, loại tốt fullHD 60fps cũng tầm 2 đến 3 triệu đồng. Do đó Webcam phù hợp nhất với sinh viên và người nghiên cứu không chuyên.

Webcam bình thường tầm 13-14 fps (frame per second) chỉ phù hợp với các ứng dụng đơn giản. Muốn làm chuyên nghiệp cần mua những loại webcam tốt, thậm chí là camera IP để dễ dàng hơn trong việc giải quyết bài toán đặt ra.

Kinh nghiệm cho thấy phần cứng tốt sẽ lập trình dễ dàng hơn. Nếu không đầu tư cho phần cứng thì tính ra còn lỗ hơn về công sức, và đôi khi bế tắc.

OpenCV cung cấp sẵn class cv::VideoCapture() với rất nhiều khả năng: đọc webcam, đọc camera IP và video. Do 3 nguồn đó đều có chung đặc điểm là liên tục trả về hình ảnh (gọi là frame) nên dùng chung class.

camera-ip

Kết nối camera IP trong opencv

Bên cạnh Webcam thì Camera IP cũng rất là thông dụng, nó có nhiều ưu điểm hơn hẳn Webcam. Cụ thể là:
– Kết nối tới khoảng cách xa hơn bằng wifi hoặc cáp mạng
– Camera IP được thiết kế để làm việc liên tục nhiều ngày, nhiều giờ
– Camera IP có nhiều chức năng hơn: có lens, có hồng ngoại nhìn đêm, có chức năng chống ngược sáng,…
– Hỗ trợ thẻ nhớ ngoài để quay phim trong trường hợp không kết nối được

Và các ứng dụng thương mại cũng sử dụng camera IP là chủ yếu. Ít khi dùng webcam cho thương mại do webcam thiết kế cho nhu cầu cá nhân. Do đó bài này sẽ hướng dẫn các bạn kết nối camera IP trong OpenCV.

[C++] Các hàm vẽ cơ bản trong OpenCV

[C++] Các hàm vẽ cơ bản trong OpenCV

OpenCV cung cấp các hàm vẽ cơ bản như vẽ điểm, vẽ đường thẳng, đường tròn, elip, hình chữ nhật, text,… Mục đích là khi nhận dạng hoặc phát hiện được đối tượng thì vẽ lên ảnh output cho dễ nhìn

mk_wm1000_ci

[C++] Xử lý sự kiện (event) mouse và keyboard

OpenCV hỗ trợ các sự kiện của mouse và keyboard ở mỗi window, do thư viện HighGUI xử lý. Dựa vào đó mà có thể tạo ra các ứng dụng lấy màu ở 1 điểm nào đó, hoặc các chương trình phức tạp tuỳ theo thao tác của người sử dụng.

Android_Studio_icon

Setup project OpenCV Android bằng Android studio

Android studio là IDE mới do Google phát triển, chuyên dụng cho các project Android. Các bạn down lib opencv4android ở trang chủ OpenCV. Trong lib có sẵn samples source cho các bạn tham khảo. Bài viết này sử dụng OpenCV4Android 3.0.

Apps-Cmake-icon

Build lib OpenCV 3.x.x cho windows

OpenCV 3.x.x có đặc điểm khác với các phiên bản trước đó là họ build toàn bộ source thành file opencv_world3xx.lib và opencv_world3xx.dll. Ưu điểm là chỉ cần include 1 file *.lib là được, còn nhược điểm là include cả những project không sử dụng. Dẫn đến project nặng không cần thiết.

Nếu người dùng chỉ muốn include những files *.lib cần thiết phải thì tự build để sử dụng. Các bước thực hiện cũng khá đơn giản: dùng cmake để build ra solution c++ (solution này chứa tất cả project nhỏ của opencv). Sau đó mở solution này rồi build là ra những lib cần thiết.

Opencv có các phiên bản cho các OS khác nhau, bài này chỉ tập trung nói về Windows.

Setup project OpenCV cho ngôn ngữ C++

Setup project OpenCV cho ngôn ngữ C++

Bài này sẽ hướng dẫn các bạn cách để tạo project ứng dụng OpenCV cho ngôn ngữ C++. Hầu hết các project example trong blog này sẽ thiết lập giống như vậy để dễ nắm được cấu trúc file/folder.

Ngôn ngữ C++ có ưu điểm là nhanh, chạy được nhiều platform khác nhau. Ngoài ra đa số các example trên mạng cũng đa phần là viết bằng C++ hoặc python, bài viết này dành cho người mới làm quen OpenCV và muốn thử nghiệm các bài tutorial trên mạng.

Các lib cho ngôn ngữ C++ được build ra 2 loại file output:
– Static lib có đuôi là *.lib. File *.lib khi build được embed vào trong file exe.
– Dynamic lib có đuôi là *.dll. File *.dll nằm riêng bên cạnh file exe và có thể sử dụng cho nhiều ứng dụng cùng lúc.

Bạn phải setup opencv c++ được để hiểu các file cần thiết tối thiểu của opencv, không nên nhảy vọt sang các bài khác.

Các bước thực hiện:
1. Chuẩn bị lib OpenCV (với các file *.lib và *.dll)
2. Include lib vào trong project
3. Test thử chương trình