안녕하세요 저는 다음 기능을 사용하여 이미지를 만듭니다.생성 된 이미지가 올바르게 표시되지 않습니다.
매트 메신저 (584, 565, CV_8UC1, imgg);
imwrite ("Output_Image.tif", im);
하지만 문제는 "Output_Image.tif"이미지를 표시 할 때입니다. 오른손 부위는 왼손 부위에 겹쳐집니다. 나는 무슨 일이 일어나고 있는지 이해할 수 없다. 제가 opencv 초보자로서 설명하십시오. 감사합니다
안녕하세요 저는 다음 기능을 사용하여 이미지를 만듭니다.생성 된 이미지가 올바르게 표시되지 않습니다.
매트 메신저 (584, 565, CV_8UC1, imgg);
imwrite ("Output_Image.tif", im);
하지만 문제는 "Output_Image.tif"이미지를 표시 할 때입니다. 오른손 부위는 왼손 부위에 겹쳐집니다. 나는 무슨 일이 일어나고 있는지 이해할 수 없다. 제가 opencv 초보자로서 설명하십시오. 감사합니다
이미지가 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
초기 이미지 3 채널 – Navdeep
몇 가지 코드를 게시 할 수 있습니까? imgg 데이터를 어떻게 얻습니까? 이미지에서 한 채널을 어떻게 추출합니까? – Flocke
그러나 한 채널을 추출하여 imgg [x] [y] = 255- (ch [0] .at (x, y)처럼 몇 가지 연산을 적용한 다음 Mat im (584,565, CV_8UC1, imgg) –
Navdeep