이미지에 있어서 검은 테두리 부분을 제거 하는 등을 위해서는 각 로우별, 칼럼별로 검은 픽셀수를 카운트하여 어느 threshold 치 이상인 경우에는 처리하는 로직등의 경우에 아래 코드가 유용하게 사용할 수 있을 것 같다.
아래코드는 수직방향인 칼럼의 검정픽셀수를 계산한다.
각 로별의 검정픽셀수도 응용할 수 있으리라 본다.
// GRAY인 경우에는 읽어들어 cv::threshold 로 이진화 할 필요가 있다.
// 이하는 이미지 자체가 흑백만이 존재하는 가정으로 하자.
cv::Mat1b img = cv::imread("img.png", CV_LOAD_IMAGE_GRAYSCALE);
cv::Mat1i black_pixels(img.cols, 1);
for(int x = 0; x < img.cols; x++){
cv::Mat col = img.col(x);
// 칼럼(수직방향)별의 검정픽셀수를 카운트하기 때문에 (높이 - 흰픽셀수)가
// 칼럼별 검은 픽셀수가 된다.
black_pixels(x,0) = img.rows - cv::countNonZero(col);
'opencv' 카테고리의 다른 글
contour / labelling (0) | 2023.12.07 |
---|---|
공백 메우기 (2) | 2023.12.02 |
cv::Mat 이모저모 (1) | 2023.11.29 |
이미지 회전 (0) | 2023.11.27 |
스캔문서의 기울기 알아보기 - 2 (0) | 2023.11.27 |