검색결과 리스트
글
이미지 이진화(binary)_threshold(), 적응적 이진화adaptiveThreshold()
이미지 이진화
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main()
{
Mat gray_img = imread("lena.tif", 0);
if (!gray_img.data) return -1;
// 고정 임계 값 처리
Mat bin_img, bininv_img, trunc_img, tozero_img, tozeroinv_img;
// 입력 이미지 출력 이미지, 임계 값, maxVal, 임계 값 처리 방법
threshold(gray_img, bin_img, 0, 255, THRESH_BINARY | THRESH_OTSU);
threshold(gray_img, bininv_img, 0, 255, THRESH_BINARY_INV | THRESH_OTSU);
threshold(gray_img, trunc_img, 0, 255, THRESH_TRUNC | THRESH_OTSU);
threshold(gray_img, tozero_img, 0, 255, THRESH_TOZERO | THRESH_OTSU);
threshold(gray_img, tozeroinv_img, 0, 255, THRESH_TOZERO_INV | THRESH_OTSU);
// 적응적인 임계 값 처리
Mat adaptive_img;
// 입력 이미지 출력 이미지 maxVal, 임계 값 결정 방법, 임계 값 처리 방법, blockSize, C
adaptiveThreshold (gray_img, adaptive_img, 255, ADAPTIVE_THRESH_GAUSSIAN_C, THRESH_BINARY, 7, 8);
// 결과 이미지보기
namedWindow("Binary",CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
namedWindow("Binary Inv",CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
namedWindow("Trunc",CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
namedWindow("ToZero",CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
namedWindow("ToZero Inv",CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
namedWindow("Adaptive",CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
imshow("Binary",bin_img);
imshow("Binary Inv",bininv_img);
imshow("Trunc",trunc_img);
imshow("ToZero",tozero_img);
imshow("ToZero Inv",tozeroinv_img);
imshow("Adaptive",adaptive_img);
waitKey(0);
return 0;
}
'OpenCV > 이미지 처리' 카테고리의 다른 글
컬러 감축 (0) | 2013.09.02 |
---|---|
이미지 반전 (0) | 2013.05.21 |
이미지 뒤집기_flip() (0) | 2013.05.21 |
이미지 크기 조정_resize() (0) | 2013.05.20 |
컬러공간 변환_cvtColor() (0) | 2013.05.20 |