Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
관리 메뉴

어제보다 나은 내가 되자

특정 색상 영역 분할, inRange 본문

영상처리

특정 색상 영역 분할, inRange

rudruddl 2020. 5. 13. 15:45
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

//int lower_hue = 40, upper_hue = 80;
int lower_hue, upper_hue;
Mat src, src_hsv, mask;

void on_hue_changed(int, void*) {
	Scalar lowerb(lower_hue, 100, 0);
	Scalar upperb(upper_hue, 255, 255);
	inRange(src_hsv, lowerb, upperb, mask);
    // R 160~179
    // G 40~80
    // B 100~140

	imshow("mask", mask);
}

int main(int argc, char* argv[]) {
	src = imread("candies.png");

	cvtColor(src, src_hsv, COLOR_BGR2HSV); // BGR->HSV 후 src_hsv에 저장

	imshow("src", src);

	namedWindow("mask");
	createTrackbar("Lower Hue", "mask", &lower_hue, 179, on_hue_changed);
	createTrackbar("Upper Hue", "mask", &upper_hue, 179, on_hue_changed);
	on_hue_changed(0, 0);

	waitKey();
	return 0;
}

 

색상은 lower_hue~upper_hue, 채도는 100~255, 명도는 0~255의 범위를 주고 이 범위에 속하면 1, 속하지 않으면 0으로 설정된다.

트랙바를 이용하여 lower와 upper를 조절해 볼 수 있다.

색상의 범위가 40~80이면 초록색, 100~140이면 파란색, 160~179이면 빨간색 영역을 찾을 수 있다.

'영상처리' 카테고리의 다른 글

이진화, threshold  (0) 2020.05.13
히스토그램 역투영을 통한 피부색 영역 검출, calcBackProject  (0) 2020.05.13
컬러 영상 히스토그램 평활화  (0) 2020.05.13
B, G, R 채널 분리  (0) 2020.05.13
색반전  (0) 2020.05.13
Comments