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

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

<시간/>

이진 이미지는 흑백의 두 가지 색상을 나타내는 디지털 이미지입니다. 이미지 처리 관점에서 이진 이미지는 0과 1의 두 가지 가능한 값을 가진 픽셀을 포함합니다. 픽셀 값이 0이면 순수한 검정색을 나타냅니다. 픽셀 값이 1일 때 순수한 흰색을 의미합니다.

회색조 이미지에는 각각에 대해 256개의 다른 가능한 값이 있습니다. 그러나 Binary Image에서는 두 가지 값만 사용할 수 있습니다. 바이너리 이미지에는 다양한 유형의 애플리케이션이 있습니다. 예를 들어 형태 변환에는 이진 이미지가 필요하고 배경에서 객체 모양 추출에는 이진 이미지가 필요합니다. OpenCV를 사용하여 이미지를 이진 이미지로 자유롭게 변환할 수 있습니다.

다음 예제는 'original_image' 행렬에 로드된 이미지를 회색조 이미지로 변환하여 'grayscale_image' 행렬에 저장하는 예제입니다-

cvtColor(original_image, grayscale_image, COLOR_BGR2GRAY);

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

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

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

다음 프로그램은 이미지를 로드하고 바이너리 이미지로 변환합니다.

예시

#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 grayscale image//
   Mat binary_image;//declaring a matrix to store the binary image
   namedWindow("Original Image");//declaring window to show binary image//
   namedWindow("Show Binary");//declaring window to show original image//
   original_image = imread("teddy.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//
   imshow("Original Image", original_image);//showing Original Image//
   imshow("Show Binary", binary_image);//showing Binary Image//
   waitKey(0);
   return 0;
}

출력

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