2014-07-19 7 views
1

안녕하세요 저는 다음 기능을 사용하여 이미지를 만듭니다.생성 된 이미지가 올바르게 표시되지 않습니다.

매트 메신저 (584, 565, CV_8UC1, imgg);
imwrite ("Output_Image.tif", im);

하지만 문제는 "Output_Image.tif"이미지를 표시 할 때입니다. 오른손 부위는 왼손 부위에 겹쳐집니다. 나는 무슨 일이 일어나고 있는지 이해할 수 없다. 제가 opencv 초보자로서 설명하십시오. 감사합니다 This is the Output_image.tiff

답변

0

이미지가 CV_8UC1 (colospace grayscale)입니까?

이미지가 BGR 이미지 (파란색, 녹색, 빨간색) 인 것처럼 보입니다. CV_8UC3 이미지를 CV_8UC1 이미지로 사용하면 이미지가 그 것처럼 보입니다.

변경이 라인 :이 라인으로

Mat im(584, 565, CV_8UC1, imgg); 

: mixChannels에 대한

Mat im(584, 565, CV_8UC3, imgg); 

EDIT() (설명 참조)

C++ : 무효 mixChannels (const를 매트 * SRC, size_t nsrcs, Mat * dst, size_t ndsts, const int * fromTo, size_t npairs)

매트 * dst는 arr입니다. mixChannels를 호출하기 전에 올바른 크기와 깊이로 할당해야하는 Mats. 그 배열에서 cv :: Mats는 실제로 1 개의 채널을 가질 것입니다.

코드 예 :

cv::Mat rgb(500, 500, CV_8UC3, cv::Scalar(255,255,255)); 
cv::Mat redChannel(rgb.rows, rgb.cols, cv_8UC1); 
cv::Mat greenChannel(rgb.rows, rgb.cols, cv_8UC1); 
cv::Mat blueChannel(rgb.rows, rgb.cols, cv_8UC1); 

cv::Mat outArray[] = {redChannel, greenChannel, blueChannel }; 

int from_to[] = {0,0 , 1,2 , 3,3}; 
cv::mixChannels(&rgb, 1, outArray, 3, from_to, 3); 

그 조금 더 복잡 분할() 함수 특히 from_to 배열에 처음

링크에서 이해하기 어려운 다큐멘터리 너무을 heres 링크보다 문서 : http://docs.opencv.org/modules/core/doc/operations_on_arrays.html#mixchannels

+0

초기 이미지 3 채널 – Navdeep

+0

몇 가지 코드를 게시 할 수 있습니까? imgg 데이터를 어떻게 얻습니까? 이미지에서 한 채널을 어떻게 추출합니까? – Flocke

+0

그러나 한 채널을 추출하여 imgg [x] [y] = 255- (ch [0] .at (x, y)처럼 ​​몇 가지 연산을 적용한 다음 Mat im (584,565, CV_8UC1, imgg) – Navdeep

관련 문제