Computer >> Máy Tính >  >> Lập trình >> C ++

Làm thế nào để đảo ngược hình ảnh nhị phân trong OpenCV bằng C ++?

Đảo ngược hình ảnh nhị phân có nghĩa là đảo ngược các giá trị pixel. Từ góc độ trực quan, khi chúng ta đảo ngược một hình ảnh nhị phân, các pixel màu trắng sẽ được chuyển đổi thành màu đen và các pixel màu đen sẽ được chuyển đổi thành màu trắng.

Dạng cơ bản của hàm này là -

cvtColor(original_image, grayscale_image, COLOR_BGR2GRAY);

Dòng tiếp theo là chuyển đổi hình ảnh thang độ xám thành hình ảnh nhị phân và lưu trữ hình ảnh đã chuyển đổi thành ma trận 'binary_image'.

threshold(grayscale_image, binary_image, 100, 255, THRESH_BINARY);

Ở đây 'grayscale_image' là ma trận nguồn, "binary_image" là ma trận đích. Sau đó, có hai giá trị 100 và 255. Hai giá trị này đại diện cho phạm vi ngưỡng. Trong dòng này, phạm vi ngưỡng biểu thị các giá trị pixel thang độ xám sẽ được chuyển đổi.

bitwise_not(source matrix, destination matrix);

Hàm bitwise_not () nghịch đảo các giá trị pixel của ma trận nguồn và lưu trữ chúng trong ma trận đích. Ma trận nguồn là 'binary_image' và ma trận đích là 'inverted_binary_image'.

Chương trình sau thực hiện đảo ngược hình ảnh nhị phân -

Ví dụ

#include<iostream>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
   Mat original_image;//declaring a matrix to load the original image//
   Mat grayscale_image;//declaring a matrix to store converted image//
   Mat binary_image;//declaring a matrix to store the binary image
   Mat inverted_binary_image;//declaring a matrix to store inverted binary image
   namedWindow("Binary Image");//declaring window to show binary image//
   namedWindow("Inverted Binary Image");//declaring window to show inverted binary image//
    original_image = imread("mountain.jpg");//loading image into matrix//
   cvtColor(original_image, grayscale_image,COLOR_BGR2GRAY);//Converting BGR to Grayscale image and storing it into 'converted' matrix//
   threshold(grayscale_image, binary_image, 100, 255, THRESH_BINARY);//converting grayscale image stored in 'converted' matrix into binary image//
   bitwise_not(binary_image, inverted_binary_image);//inverting the binary image and storing it in inverted_binary_image matrix//
   imshow("Binary Image", binary_image);//showing binary image//
   imshow("Inverted Binary Image", inverted_binary_image);//showing inverted binary image//
   waitKey(0);
   return 0;
}

Đầu ra

Làm thế nào để đảo ngược hình ảnh nhị phân trong OpenCV bằng C ++?