2013-10-18 7 views
4

나는 코드OpenCV Java로 매트릭스의 사각형 (ROI) 색상을 변환하는 방법은 무엇입니까?

public Mat detect(Mat image){ 
    Rect roi = new Rect(new Point(50, 50), new Point(image.width() - 50, image.height() - 50)); 
    Mat mask = image.submat(roi); 
    Mat temp = new Mat(); 
    Imgproc.cvtColor(mask, temp, Imgproc.COLOR_BGRA2GRAY,0); 
    temp.copyTo(mask); 
    return image; 
} 

다음과 OpenCV의 자바를 가진 행렬의 투자 수익 (ROI)에 색상을 변환하기 위해 노력하고있어하지만 결과는 지정된 이미지와 동일합니다. 나는 Imgproc.cvtColor을 변경하면() 예를 들어 Imgproc.medianBlur() 효과 전화 :

... 
    Imgproc.medianBlur(mask, temp, 11); 
    ... 

볼 흐린 사각형이 있습니다. 나는 Imgproc.cvtColor()의 프로세스가 원본 이미지에 대한 참조가 새로 생성 된 것으로 대체되는 동안 생각합니다. 그렇다면 참조를 잃지 않고 행렬의 ROI 색상을 어떻게 변환 할 수 있습니까?

감사합니다. 감사합니다.

P.S : 샘플 이미지를 추가하고 싶지만 내 평판이 충분하지 않습니다. 미안하지만 샘플 없이도 내 문제를 상상할 수 있기를 바랍니다.

답변

1

이미지를 가질 수 없습니다. 즉, 부분은이고, 그렇지 않으면 4 채널입니다.

blur 수는 채널 수를 변경하지 않았으므로 정상적으로 작동했습니다.

당신이

Mat temp = new Mat(); 
Imgproc.cvtColor(mask, temp, Imgproc.COLOR_BGRA2GRAY,0); 
Mat temp_rgba = new Mat(); 
Imgproc.cvtColor(temp, temp_rgba, Imgproc.COLOR_GRAY2BGRA,0); 
temp_rgba.copyTo(mask); 
를 복사하기 전에, 다시 RGBA하기 위해 회색 (하위) IMG을 변환해야합니다