2017-04-02 4 views
0

다중 채널 이미지 (예 : BGR)가 주어지면 픽셀 값이 동일하도록 마스크 (1C)를 생성하는 가장 효율적인 방법은 무엇입니까?단일 채널 마스크 생성

cv::compare()은 단일 채널 입력 이미지에서만 작동합니다.

op==을 사용하면 3C 마스크가 생성됩니다.
나는 그 다음 reduce를 쓸 수있다. 그러나 그것은 낭비적인 두 번째 통과처럼 보인다.

이렇게하는 방법이 있습니까?

답변

2

다중 채널 매트릭스의 경우 단일 채널, 3 채널 또는 4 채널 이미지를 src으로 가져오고 세그먼트의 색 상한 및 하한을 사용하는 cv::inRange()을 사용해야합니다. 주어진 Color의 동등성을 테스트하기를 원하기 때문에 lower_boundupper_bound을 동일한 스칼라 값으로 전달해야합니다.

cv::Scalar color = cv::Scalar(100, 200, 150); 
cv::Mat mask; 
cv::inRange(img, color, color, mask); 
+1

아! 나는 그 기능을 잊었다! 감사! –

+0

완벽을 기하기 위해 최신 문서의 링크 : http://docs.opencv.org/3.2.0/d2/de8/group__core__array.html#ga48af0ab51e36436c5d04340e036ce981. –