Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++를 사용하여 OpenCV에서 이진 이미지를 반전하는 방법은 무엇입니까?

<시간/>

이진 이미지를 반전한다는 것은 픽셀 값을 반전시키는 것을 의미합니다. 시각적인 관점에서 바이너리 이미지를 반전시키면 흰색 픽셀은 검은색으로 변환되고 검은색 픽셀은 흰색으로 변환됩니다.

이 함수의 기본 형식은 -

cvtColor(original_image, grayscale_image, COLOR_BGR2GRAY);

다음 줄은 회색조 이미지를 바이너리 이미지로 변환하고 변환된 이미지를 'binary_image' 행렬에 저장하는 것입니다.

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

여기서 'grayscale_image'는 소스 행렬이고 'binary_image'는 대상 행렬입니다. 그 후 100과 255의 두 값이 있습니다. 이 두 값은 임계값 범위를 나타냅니다. 이 줄에서 임계값 범위는 변환할 회색조 픽셀 값을 나타냅니다.

bitwise_not(source matrix, destination matrix);

bitwise_not() 함수는 소스 행렬의 픽셀 값을 반전하고 대상 행렬에 저장합니다. 소스 행렬은 'binary_image'이고 대상 행렬은 'inverted_binary_image'입니다.

다음 프로그램은 바이너리 이미지 반전을 수행합니다 -

예시

#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;
}

출력

C++를 사용하여 OpenCV에서 이진 이미지를 반전하는 방법은 무엇입니까?