Search…

OpenCV – Cài Đặt và Ví Dụ Minh Họa Sử Dụng

15/09/20204 min read
Giới thiệu tổng quan OpenCV, hướng dẫn cài đặt và viết chương trình minh hoạ bằng C++.

Giới thiệu

OpenCV (Open Computer Vision) là một thư viện mã nguồn mở chuyên dùng để xử lý các vấn đề liên quan đến thị giác máy tính. Nhờ một hệ thống các giải thuật chuyên biệt, tối ưu cho việc xử lý thị giác máy tính, vì vậy tính ứng dụng của OpenCV là rất lớn, có thể kể đến như:

  • Nhận dạng ảnh: nhận dạng khuôn mặt, các vật thể, ...
  • Xử lý ảnh: khử nhiễu, điều chỉnh độ sáng, ...
  • Nhận dạng cử chỉ
  • ...

Có thể sử dụng nhiều ngôn ngữ lập trình khác nhau để làm việc với OpenCV như C++, Java, Python, C#, ...

Bài viết này hướng dẫn cách tải, cài đặt OpenCV và viết chương trình minh họa sử dụng với C++.

Cài đặt OpenCV

Truy cập trang web https://opencv.org/releases/ để tải về phiên bản OpenCV mới nhất.

Chọn phiên bản OpenCV thích hợp cho mục đích sử dụng và tải về:

Tiến hành chạy file cài đặt, chọn đường dẫn để bộ cài đặt giải nén thư viện OpenCV.

ss_3

Quá trình giải nén

ss_1

Sau khi giải nén, thu được 2 folder:

  • Build: chứa thư viện OpenCV đã được biên dịch thành thư viện cho nhiều ngôn ngữ khác nhau: C++, Java, Python.
  • Sources: tài liệu hướng dẫn, ví dụ và mã nguồn của OpenCV.
ss_9

Tiếp theo, tích hợp thư viện OpenCV vào trong project. Song song đó, để minh họa việc sử dụng thư viện này, viết một ví dụ load và hiển thị ảnh sử dụng các API của OpenCV.

Tích hợp OpenCV vào project

Khởi tạo một project trống.

ss_8

Tại thư mục chứa project, tạo folder Lib/opencv và copy toàn bộ nội dung ở đường dẫn <extracted_path>/build/x86/vc12<extracted_path>/build/include vào. Trong đó, <extracted_path> là đường dẫn cài đặt OpenCV ở trên.

Sau khi copy, có được cấu trúc folder như sau

ss_6

Tại giao diện của Visual Studio, chọn Project Properties -> Configuration Properties -> C/C++ -> General -> Addition Include Directories, thêm đường dẫn $(ProjectDir)\Lib\opencv\include.

ss_4

Tiếp theo, cũng tại trang Project Properties, chọn Linker -> General -> Addition Library Directories, thêm vào đường dẫn $(ProjectDir)\Lib\opencv\lib.

ss_2

Và tại Linker -> Input, thêm vào các thư viện sau

opencv_ts300d.lib
opencv_world300d.lib
ss_10

Cuối cùng, copy file opencv_world300d.dll trong Lib\opencv\bin vào folder Debug của project.

Kết thúc việc tích hợp thư viện OpenCV vào project. Để kiểm tra tính chính xác của công việc đã làm, viết một ví dụ nhỏ sử dụng OpenCV.

Minh họa sử dụng thư viện OpenCV

Trong ví dụ minh họa này, chương trình có chức năng:

  • Load một ảnh bất kì
  • Đọc vào đối tượng Mat của OpenCV
  • Hiển thị lên màn hình

Tạo file sample.cpp có nội dung như sau:

#include <stdio.h>
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"

using namespace cv;

int main()
{        
    // Read image
    Mat image = imread("Lena.png", CV_LOAD_IMAGE_COLOR);

    // Check for valid
    if (!image.data)
    {
        printf("Could not open or find the image\n");
        return -1;
    }

    // Create and show image in window    
    imshow("STDIO OpenCV Sample", image);

    // Wait input and exit
    waitKey(0);

    return 0;
}
  • Dòng 10: đọc file ảnh lên với hàm imread cùng tùy chọn CV_LOAD_IMAGE_COLOR (đọc ảnh màu). Hàm này trả về một ma trận các pixel màu. Ý nghĩa của các tùy chọn:
    • CV_LOAD_IMAGE_UNCHANGED: load ảnh bình thường (bao gồm cả kênh alpha nếu có)
    • CV_LOAD_IMAGE_GRAYSCALE: load ảnh và chuyển về trắng đen
    • CV_LOAD_IMAGE_COLOR: load ảnh phần màu (RGB), bỏ qua kênh alpha.
  • Dòng 13 – 17: kiểm tra việc đọc ảnh có thành công hay không.
  • Dòng 20: hiển thị ảnh đã load sử dụng hàm imshow với tham số là tiêu đề cửa sổ và nội dung ảnh.

Kết quả của đoạn chương trình:

ss_7

Thử thay đổi tùy chọn tại dòng 10 từ CV_LOAD_IMAGE_COLOR thành CV_LOAD_IMAGE_GRAYSCALE 

ss_5

Download chương trình mẫu

  • STDIO_OpenCV_Sample.zip (127 MB): bản đầy đủ.
  • STDIO_OpenCV_Sample_Compact.zip (485 KB): tương tự như bản đầy đủ nhưng đã loại bỏ thư mục Lib và Debug, chỉ cần copy lại nội dung như hướng dẫn trên là có thể chạy được.
IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024