반응형
# 환경
- visual studio 2019, c++
- OpenCV 4.x
# 픽셀 색상 변경
- 자주 사용하는 OpenCV 픽셀 색상 값 변경
- 단순 Grayscale이나 흑백 (이진화)이 아닌 어두운 회색 색상 계열은 검정색, 밝은 흰색 계열 색상은 흰색으로 변환함.
cv::Mat img; //from camera or image
/*
~~~~~~~~~~
*/
for (int y = 0; y < 100; y++)
{
for (int x = 0; x < 100; x++)
{
if (img.at<cv::Vec3b>(y, x)[0] < 60 && img.at<cv::Vec3b>(y, x)[1] < 60 && img.at<cv::Vec3b>(y, x)[2] < 60
&& abs(img.at<cv::Vec3b>(y, x)[0] - img.at<cv::Vec3b>(y, x)[1]) < 20
&& abs(img.at<cv::Vec3b>(y, x)[1] - img.at<cv::Vec3b>(y, x)[2]) < 20
&& abs(img.at<cv::Vec3b>(y, x)[2] - img.at<cv::Vec3b>(y, x)[0]) < 20)
{
img.at<cv::Vec3b>(y, x)[0] = 0;
img.at<cv::Vec3b>(y, x)[1] = 0;
img.at<cv::Vec3b>(y, x)[2] = 0;
}
if (img.at<cv::Vec3b>(y, x)[0] > 130 && img.at<cv::Vec3b>(y, x)[1] > 130 && img.at<cv::Vec3b>(y, x)[2] > 130
&& abs(img.at<cv::Vec3b>(y, x)[0] - img.at<cv::Vec3b>(y, x)[1]) < 20
&& abs(img.at<cv::Vec3b>(y, x)[1] - img.at<cv::Vec3b>(y, x)[2]) < 20
&& abs(img.at<cv::Vec3b>(y, x)[2] - img.at<cv::Vec3b>(y, x)[0]) < 20)
{
img.at<cv::Vec3b>(y, x)[0] = 255;
img.at<cv::Vec3b>(y, x)[1] = 255;
img.at<cv::Vec3b>(y, x)[2] = 255;
}
}
}
# 요약
- RGB의 색상이 동일하거나 비슷하면 흰색 - 회색 - 검정색 계열의 색상임.
- 다른 RGB 색상은 그대로 유지하되, 흰색 - 회색 - 검정색 계열의 색상만 흑백으로 변경하고자 간단한 아이디어 메모.
반응형
'프로그래밍 > 작은 메모' 카테고리의 다른 글
| MCU 단계에서 딥러닝을 사용하는 비교적 간단한 방법 (1) | 2025.07.25 |
|---|---|
| MCU 단계에서 딥러닝을 수행하려면? (1) | 2025.07.24 |
| v4l2 USB 카메라 노출 시간, 해상도 설정 (0) | 2025.06.10 |
| 프레임 측정과 현재 시간을 포함한 파일 명으로 OpenCV 이미지 저장 (0) | 2025.05.28 |
| Qt QImage to Opencv Mat(Qt 이미지 ↔ OpenCV 이미지) (0) | 2025.05.20 |