Các hàm xử lý ảnh trong OpenCV không thể bỏ qua

OpenCV có tên đầy đủ là Open Source Computer Vision, là một thư viện về thị giác máy với sức chứa hơn 500 hàm và hơn 2500 thuật toán về xử lý ảnh và đương nhiên sẽ có các vấn đề liên quan đến thị giác của máy. Cùng chúng tôi tìm hiểu kĩ hơn về OpenCv và các hàm xử lý ảnh trong OpenCv qua bài viết này nhé.

OpenCV là gì?

các hàm xử lý ảnh trong OpenCv

Open Cv được phong cách thiết kế rất tối ưu giúp sử dụng được tối đa sức mạnh của những chip đa lõi … triển khai những phép tính toán nhanh và vận tốc phân phối của nó phải đủ nhanh so với những ứng dụng thường thì. OpenCV là một thư viện chạy trên nhiều nền tảng khác nhau như Window, Mac, IOS, Linux, … Việc sử dụng thư viện OpenCV phải tuân theo rất đầy đủ những lao lý về việc sử dụng ứng dụng với mã nguồn mở BSD, từ đó bạn sẽ hoàn toàn có thể sử dụng thư viện này không lấy phí dành cho cả mục tiêu thương mại với phi thương mại .

OpenCV được khởi động vào năm 1999 và đến những năm 2000 thì OpenCV được giới thiệu đến hội nghị IEEE về những vấn đề liên quan đến thị giác máy và nhận dạng chúng. Tuy nhiên thì đến những năm 2006 mới phát hành phiên bản OpenCV 1.0 và năm 2008 bản 1.1 mới ra đời. Vào tháng 10 năm 2009, phiên bản OpenCV thứ hai đã rơi đời và được gọi là phiên bản 2.x, phiên bản này sẽ có giao diện C++ (phiên bản đầu tiên chỉ có giao diện C) và nó có nhiều điểm khác biệt khác so với phiên bản lần thứ nhất.

Thư viện OpenCV sẽ được tương hỗ từ Intel, sau đó thì OpenCv được tương hỗ bởi Willow Garage – phòng thí nghiệm robot công nghệ tiên tiến mới. Cho đến giờ đây thì OpenCV vẫn là một thư viện mở và đang được tăng trưởng bởi nguồn quỹ phi doanh thu và đã nhận được sử hưởng ứng nồng nhiệt đến từ hội đồng .

Build thư viện OpenCV bằng Cmake

Trường “ Where is the code ”, bạn hãy chọn địa chỉ source code trong thư mục của OpenCV vừa thiết lập chính là E : / opencv / sources và trường “ Where to build the binaries ” tại một thư mục dùng để sử dụng ở build. Ở đây chúng tôi chọn E : / opencv / build / x86. Bạn đã chọn xong thì nhấn nút Configure .
Các bạn hãy chọn generator bằng MinGW Makefiles
Chọn nút Generate
Bạn đã chọn Cmake xong thì những bạn hãy chạy lệnh mingw32-make từ MinGW .

Cách hiển thị ảnh và load ảnh với chương trình OpenCV C++

các hàm xử lý ảnh trong OpenCv 1

Nhắc đến các hàm xử lý ảnh trong OpenCV thì chúng tôi sẽ hướng dẫn bạn cách hiển thị và load ảnh với Open C++.

Trong thư viện OpenCV C++ thì tất cả các dữ liệu ảnh và ma trận đều sẽ được lưu dưới dạng cv::Mat. Nguyên mẫu của hàm chính là cv::Mat imread(const std::string &filename, int flags) trong đó filename chính là đường link tới file ảnh và nếu file ảnh không nằm trong thư mục thì ta phải chỉ ra đường dẫn dưới dạng D:\Anh\abc.jpg. Flags là tham số ảnh để ta load vào.

Để hiển thị một ảnh lên màn hình hiển thị thì trước hết ta phải tạo một hành lang cửa số. Tạo hành lang cửa số phải có tiêu đề hành lang cửa số là một chuỗi dài sting winname. Trong đó tham số Flags sẽ chỉ cho bạn kiểu hành lang cửa số muốn tạo còn tham số CV_ WINDOW_AUTOSIZE đã được sử dụng thì kích cỡ hành lang cửa số sẽ được tạo ra một cách tự động hóa tùy theo size ảnh. Ví dụ như hàm có tên namedWindow ( const std :: string và winname, int flags ) .
Chúng ta sẽ có hàm imshow ( const std :: string winname, cv :: InputArray Mat ) sẽ
Hàm imshow ( const std :: string winname, cv :: InputArray Mat ) sẽ hiển thị ảnh ra hành lang cửa số đã được tạo trước đó .
Hàm waitKey ( int delay ) sẽ đợi cho đến khi bạn nhấn một phím trong khoảng chừng thời hạn delay. Chúng ta sẽ thường dùng hàm này với mục tiêu là muốn dừng lại màn hình hiển thị trong khoảng chừng thời hạn tham số delay. Nếu như bạn muốn dừng màn hình hiển thị mãi thì ta nên đặt tham số delay bằng 0

Điều chỉnh độ tương phản và độ sáng

Ta sử dụng các hàm xử lý ảnh trong OpenCV để điều chỉnh độ tương phản và độ sáng của ảnh. Một điểm ảnh mà được lưu trữ trên máy tính được gọi là một ma trận của các điểm ảnh. Trong thư viện OpenCV thì điểm ảnh được biểu diễn dưới dạng cv::Mat. Đầu tiên chúng tôi sẽ xét một kiểu ảnh thông thường nhất đó chính là RGB. Ảnh thì mỗi pixel ảnh quan sát được chính là sự kết hợp của các màu Red (R), Green (G), Blue (B). Với sự kết hợp này thì chúng ta sẽ cho ra vô số các màu sắc khác nhau tùy theo tỉ lệ R,G,B. Chúng ta sẽ giả sử ảnh mã hóa bằng 8 bit, khi đó thì mỗi giá trị R,G,B sẽ được nằm trong khoảng [0, 255]. Như vậy, chúng ta có thể biểu diễn tới 255*255*255 ~ 1,6 triệu màu từ ba màu chính trên.

Qua ảnh trên, mỗi ảnh sẽ có m cột và n hàng, m được gọi là chiều dài của ảnh còn n là chiều cao của ảnh. Với mỗi pixel ở vị trí bất kì (i, j) sẽ tương đương với ba kênh màu kết hợp. Chúng ta muốn truy xuất từng pixel thì chúng ta nên sử dụng mẫu img.at(i, j)[k]

Chúng ta sẽ áp dụng kiến thức trên để tăng hoặc giảm độ sáng hay tương phản của ảnh màu.

Giả sử f là hàm màn biểu diễn cho một ảnh, f ( x, y ) là một giá trị của px trong ảnh và vị trí là ( x, y ). Chúng ta hãy đặt g ( x, y ) = αf ( x, y ) + β, khi đó thì tất cả chúng ta nói ảnh g ( x, y ) là ảnh có độ tương phản thấp hơn mấy lần so với ảnh f ( x, y ). Dựa vào công thức trên thì ta có chương trình biến hóa độ sáng hay tương phản
Hàm clone ( ) dùng với mục tiêu sao chép ảnh giống hệt ảnh gốc cho vào ảnh đích ( drt = src.clone ( ) ). Giá trị của f ( x, y ) hay g ( x, y ) đều phải nằm trong khoảng chừng [ 0,255 ], phép đổi khác là g ( x, y ) = αf ( x, y ) + β hoàn toàn có thể khiến giá trị của g ( x, y ) vượt qua ngưỡng đó. Sau đây là tác dụng của α = 2.0 và β = 30 .

Như vậy, chúng tôi đã giới thiệu qua cho bạn các hàm xử lý ảnh trong OpenCV. Nếu có gì thắc mắc thì hãy liên hệ với chúng tôi để được giải đáp. Chúc các bạn thành công!