Lập trình OpenCV C++ Bài 2: Load ảnh bằng opencv

Hello.

Chúng ta tiếp tục bài số 2 trong Chủ đề lập trình OpenCV C++

Bài số 2 chúng ta sẽ học các load một tấm ảnh lên trên view của project đã tạo ở bài 1.

 

Step 1: Định nghĩa hàm OpenDocument

Các bạn hãy mở file : MFCOpenCV2Doc.h và chúng ta thêm vào một hàm :

 BOOL OnOpenDocument(LPCTSTR lpszPathName);

Các bạn thêm nó như đoạn code ở trên

Sau đó sang file cpp chúng ta bắt đầu định nghĩa nó

Chúng ta định nghĩa bước đầu đơn giản như trên

Step 2: Include các file header của OpenCV

Trở lại file header của lớp Doc

các bạn thêm đoạn include như sau

Các bạn gọi include 5 file như vậy

Step 3: Bắt đầu xử lý việc đọc một file ảnh

Các bạn khai báo các biến thành viên sau cho lớp doc

+ biến m_Video;                      // Quản lý xem file đọc vào là ảnh hay video

+ BITMAPINFO* m_pBmi;  // Quản lý dữ liệu ảnh xuất ra file

cv::Mat m_Mat;                      // Quản lý việc đọc ảnh từ opencv

gán con trỏ m_pBmi = NULL bên hàm khởi tạo của lớp doc

 

 

Định nghĩa 1 hàm : void SetupBitmapInfo(cv::Mat& mat, const int& bitCount = 24);  như minh họa dưới đây

Định nghĩa bên file cpp

Quay trở lại hàm OnOpenDocument()

các bạn xử lý code như dưới đây, bắt đầu từ dòng //Start load image by opencv

Thực hiện build lần 1 để xem có lỗi gì không ?

Step 4: Xử lý hiển thị hình ảnh trên view

Các bạn khai báo một hàm : void RenderImage(OpenCVGUIDoc* pDoc, CDC* pDC); bên lớp view như dưới đây

Sau đó định nghĩa hàm này bên file cpp như sau:

Block1 là khối xử lý thiết lập môi trường bitmap cho view, để hiện thị được hình ảnh cho view

Block2 là lấy liệu hình ảnh đọc được từ opencv thông qua biến : pDoc->m_Mat

Block3 là thực hiện việc đẩy dữ liệu trong m_Mat vào môi trường đồ họa của MFC thông qua hàm StretchDIBits

Về cơ bản chúng ta ko đi sâu vào phần xử lý của hàm render vì đó là cơ chế của MFC, các bạn có thể tự tìm hiểu riêng.

 

Sau đó gọi hàm renderImage này trong hàm onDraw và bỏ comment đối số pDc của hàm OnDraw đi

Thực hiện build và test chương trình

Các bạn chạy chương trình lên, sẽ thấy view sẵn có màu đen

Các bạn chọn vào icon open và sau đó chọn một tấm ảnh, rồi ok để kiểm tra

Kết quả thành công sẽ là như sau:

Các bạn sẽ thấy xuất hiện một view thứ 2 và view này hiển thị được hình ảnh chúng ta cần load

Ok đến đây là chúng ta đã hoàn thành được bài 1 về cách load ảnh bằng opencv

Các bạn đừng vội thắc mắc như là:

vì sao ảnh bị che, vì sao lại có 2 view, vì sao  em load lên bị đen trắng.

Tất cả những vấn đề trên chúng ta sẽ dần xử lý trong các bài tiếp theo.

Đến bước này các bạn đã thành công trong việc đọc ảnh lên view bằng opencv.

 

 

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.