OpenCV

Đọc Và Hiển Thị Hình Ảnh Với OpenCV

Giới thiệu

Qua hai bài viết tổng quan về thư viện OpenCV và cài đặt thư viện này vào Xcode. Thì ở bài này mình sẽ hướng dẫn cho các bạn cách đọc một hình ảnh và hiển thị lên cửa sổ Windows.

Các bạn có thể xem lại hai bài viết trước về OpenCV của mình để hiểu rõ hơn cũng như chuẩn bị đầy đủ công cụ trước khi bước vào bài hướng dẫn này.

http://eitguide.com/tong-quan-ve-thu-vien-opencv-open-source-computer-vision/

http://eitguide.com/setup-thu-vien-opencv-trong-xcode/

Chương trình đọc và hiển thị hình ảnh

Dưới đây là đoạn chương trình đọc hình ảnh từ file và hiển thị lên cửa sổ windows sử dụng thư viện OpenCV.

Giải thích mã nguồn

Chúng ta sử thư viện iostream cho việc sử dụng input và output trên command line ví dụ như sử dụng lệnh cout…

Hai module core và highgui mình đã giới thiệu ở bài Tổng quan về thư viện OpenCV

core: Module định nghĩa các cấu trúc và các hàm cơ bản xử lý ảnh và sử dụng trong cá module khác. Ví dụ như cấu trúc lưu trữ hìn ảnh Mat

highgui: Module cho phép tương tác với người dùng trên UI (User Interface) như hiển thị hình ảnh, video capturing.

Đây là file input của chúng ta file này phải đặt cùng thư mục chứa file thực thi của chúng ta.

Mat là cấu trúc dùng để lưu giữ data của hình ảnh được sử dụng trong OpenCV.

Hàm imread là một hàm dùng để đọc hình ảnh từ file với đối số truyền vào là một input đầu vào chứa tên file, đối số thứ hai là một biến cờ chỉ định cách mà OpenCV sẽ load hình.

Và có các giá trị

Trong đó chúng ta thường quan tâm tới các giá trị dưới đây:

  • CV_LOAD_IMAGE_COLOR: Hình ảnh load lên dưới định dạng 3 kênh màu RBG (Red, Green, Blue).
  • CV_LOAD_IMAGE_GRAYSCALE: Hình ảnh load lên dưới dạnh hình ảnh xám.
  • CV_LOAD_IMAGE_UNCHANGED: Hình ảnh load lên được giữ nguyên cấu trúc của nó.

Phương thức này dùng để kiểm tra hình ảnh của chúng ta có được đọc thành công hay không. Nếu trả về là true có nghĩa là hình ảnh load lên thất bại ngược lại hình ảnh load lên thành công và chúng ta sẽ làm việc với image.

Hàm namedWindow sẽ tạo một cửa sổ window với tiêu đề của cửa sổ là đối số thứ nhất và đối số thứ hai là biến cờ chỉ định size của cửa số. Thường chúng ta để là WINDOW_AUTOSIZE.

Phương thức này có nhiệm vụ hiển thị image mà chúng ta đã đọc thông qua hàm imread ở đầu.

Hàm nhận input từ bàn phím. Mình để hàm này vào để cho chương trình hiển thị hình ảnh cho đến khi ngừoi dùng nhấn bất kì phím nào trên bàn phím thì sẽ đóng chương trình.

Chạy chương trình và xem kết quả

Chúng ta tiến hành chạy chương trình trên và xem kết quả

 

read_image_opencv_ss_1

Thay đổi flags trong hàm imread thành CV_LOAD_IMAGE_GRAYSCALE và xem kết quả

read_image_opencv_ss_2

Vậy là bài thứ nhất rất là đơn giản để chúng ta bắt đầu làm việc với thư viện OpenCV. Bài viết sau chúng ta sẽ học cách chuyển đổi các hệ màu trong OpenCV và lưu hình ảnh sử dụng phương thức imWrite.

2 thoughts on “Đọc Và Hiển Thị Hình Ảnh Với OpenCV”

  1. Cho em hỏi hai cái ” using namespace std” và ” using namespace cv” là có tác dụng gì ạ, có phải nó thay thế cho các dòng cv:: và std:: không ạ ?
    Em cảm ơn ạ !

  2. bạn ơi cho mình hỏi tại sao khi mình chạy code bên trên thì lại không thể load ảnh ra mà cứ báo là”can’t open or read image” là sao ạ.mình cảm ơn.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.