728x90
반응형
c++과 opencv를 이용해 이미지 각 픽셀값을 thresholding하는 방법입니다.
이번 챕터에서는 아래 이미지를 입력으로 사용합니다.

계속 사용하게 될 threshold 함수의 원형은 아래와 같습니다.
threshold(입력이미지, 출력이미지, 임계값, 최대값, 방식)
1. Binary Thresholding
- 픽셀값이 1~255 → 흰색(255)
- 픽셀값이 0 → 검정(0)
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main() {
// Read image
Mat src = imread("threshold.png", IMREAD_GRAYSCALE);
Mat dst;
// Set threshold and maxValue
double thresh = 0;
double maxValue = 255;
// Binary Threshold
threshold(src,dst, thresh, maxValue, THRESH_BINARY);
imwrite("opencv-threshold-example.jpg", dst);
return 0;
}

- 픽셀값이 0 ~ 127 → 검정
- 픽셀값이 128 ~ 255 → 흰색

2. Inverse-Binary Thresholding (THRESH_BINARY_INV)
- 픽셀값 > 127 → 0 (검정)
- 픽셀값 <=127 → 255 (흰색)
// Set threshold and maxValue
double thresh = 128;
double maxValue = 255;
threshold(src,dst, thresh, maxValue, THRESH_BINARY_INV);

3. Truncate Thresholding (THRESH_TRUNC)
: 임계값보다 큰 값은 잘라서(thresh로) 고정하고, 작은 값은 그대로 유지
- 픽셀값 > 127 → 127
- 픽셀값 <=127 → 원래 값 유지
// Set threshold and maxValue
double thresh = 127;
double maxValue = 255;
threshold(src,dst, thresh, maxValue, THRESH_TRUNC);

4. Threshold to Zero (THRESH_TOZERO)
: 임계값보다 작거나 같은 값은 0으로 제거, 큰 값만 그대로 유지
- 픽셀값 > 127 → 원래 값 유지
- 픽셀값 <=127 → 0 (검정)
double thresh = 127;
double maxValue = 255;
threshold(src,dst, thresh, maxValue, THRESH_TOZERO);

5. Inverted Threshold to Zero (THRESH_TOZERO_INV)
: 임계값보다 큰 값 제거, 작은 값만 유지
- 픽셀값 > 127 → 0
- 픽셀값 <=127 → 원래 값 유지
double thresh = 127;
double maxValue = 255;
threshold(src,dst, thresh, maxValue, THRESH_TOZERO_INV);

[참고자료]
https://learnopencv.com/opencv-threshold-python-cpp/
728x90
반응형
'OpenCV' 카테고리의 다른 글
| [OpenCV] C++ OpenCV / Image Filtering Using Convolution (0) | 2025.12.05 |
|---|---|
| [OpenCV] C++ OpenCV image annotating (0) | 2025.11.21 |
| [OpenCV] C++ OpenCV 이미지 다루기 기초 (0) | 2025.11.12 |
| [OpenCV] C++ OpenCV 설치 (with Linux) (0) | 2025.11.06 |
| [OpenCV] OpenCV dnn을 이용해 딥러닝 모델 사용하기 (1) | 2024.02.08 |