Nhận diện hình ảnh với OpenCV_CẤU HÌNH OPENCV VỚI VS C++
- Chuẩn bị:
Download OpenCV tại: http://opencv.org/downloads.html, hoặc download thư
viện OpenCV đã được biên dịch sẵn: http://www.mediafire.com/?gda0fgqi5u8h7.
Gồm 3 thư mục như sau:
- Cấu hình OpenCV với Visual Studio C++
Tạo project Lab1:
Từ Menu Project à References…
Chọn Configuration Properties à C/C++ à General
Chọn Configuration Properties à Linker à General
Chọn Configuration Properties à Linker à Input
Sao chép các file đuôi *.dll vào thư mục debug của Project
- Chương trình đầu tiên
Viết chương trình tải và hiện một tập tin ảnh cho trước lên màn hình. Sau khi tạo project, bổ sung đoạn chương trình sau:
#include “stdafx.h”
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
int _tmain(int argc, _TCHAR* argv[])
{
IplImage * img = cvLoadImage(“C:\\hinh1.jpg”);
if ( img != NULL )
{
cvNamedWindow( “My window” );
cvShowImage( “My window”, img );
cvWaitKey();//Đợi người dùng nhấn 1 phím bất kỳ cvReleaseImage( &img ); //Giải phóng vùng nhớ cvDestroyWindow( “My window” ); //Đóng cửa sổ
}
return 0;
}
Đoạn chương trình trên sẽ tải một ảnh lên bộ nhớ và hiển thị ra màn hình. Ta xem xét một số dòng lệnh chính:
IplImage * img = cvLoadImage(“C:\\hinh1.jpg”);
Hàm cvLoadImage() thực hiện tải ảnh dựa vào tên file được truyền vào, đồng thời cấp phát một vùng nhớ cần thiết cho cấu trúc dữ liệu ảnh. Hàm này trả về một con trỏ trỏ tới vùng nhớ được cấp phát trên.
cvNamedWindow( “My window” );
Hàm cvNamedWindow tạo một cửa sổ trên màn hình để chứa và hiển thị ảnh.
cvShowImage( “My window”, img );
Chúng ta đã có một ảnh dưới dạng một con trỏ IplImage *, và hiển thị nó lên của sổ vừa tạo thông qua hàm cvShowImage().
- Chương trình thứ hai:
Viết chương trình phát một đoạn video:
#include <highgui.h>
int main( int argc, char** argv )
{
cvNamedWindow( “Example2”, CV_WINDOW_AUTOSIZE );
CvCapture* capture =
cvCreateFileCapture(“C:\\video1.avi”); IplImage* frame;
while(1) {
frame = cvQueryFrame( capture );
if( !frame ) break;
cvShowImage( “Example2”, frame );
char c = cvWaitKey(33);
if( c == 27 ) break;
}
cvReleaseCapture( &capture );
cvDestroyWindow( “Example2” );
}
CvCapture* capture = cvCreateFileCapture(“video1.avi”);
Hàm cvCreateFileCapture() với tham số truyền vào là tên đoạn video cần load đoạn video và sẽ trả về con trỏ trỏ tới cấu trúc CvCapture. Cấu trúc này sẽ chứa toàn bộ thông tin đoạn video đã được đọc.
frame = cvQueryFrame( capture );
Bên trong vòng lặp while, bắt đầu đọc đoạn video. Hàm cvQueryFrame() bắt frame kế tiếp trong đoạn video trên vào vùng nhớ (vùng nhớ này là một phần của cấu trúc CvCapture đã được cấp phát trước đó). Một con trỏ được trả về cho frame được bắt giữ này. Vì cvQueryFrame sử dụng vùng nhớ đã được cấp phát cho cấu trúc nên không cần gọi hàm cvReleaseImage() cho frame này.
- Bài tập
Viết chương trình chuyển ảnh sang ảnh mức xám (grayscale).
Sản phẩm được quan tâm
Nhận bài viết mới
Các bài viết chia sẻ đến cộng đồng rất chât lượng, mang lại rất nhiều kiến thức mới. Đừng bỏ lỡ bất kỳ bài viết nào của chung tối, hãy đăng ký để nhận bài viết mới qua Mail của bạn
Đăng ký để không bỏ lỡ bài viết nào!
Bài mới
- Giáo trình Robocon
- Giới thiệu các loại board Esp8266 dành cho IoT và thiết lập cơ bản cho người mới học
- Hướng dẫn sử dụng LoraEasyV1
- Tài liệu tự học Python tiếng Việt cho người mới bắt đầu
- Tương lai của kết nối IoT (Internet of Things) tiềm năng và sự đa dạng
- HƯỚNG DẪN LẤP RÁP XE MÔ HÌNH 4 BÁNH
- HƯỚNG DẪN LẮP RÁP XE CHẠY BẰNG NĂNG LƯỢNG MẶT TRỜI
Danh mục