0
이미지를 열고 채널을 분할하는 데 여러 가지 방법을 시도했습니다. 3 Matrix와 함께 작업하면됩니다. 뭐가 잘못 됐는지 나는 모르겠다. 여기 내 코드 :OpenCV Visual C++ cvSplit 문제
IplImage* img = cvLoadImage("C:\\foo.jpg");
cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE);
cvShowImage("Example1", img);
std::cout << "Hight: " << img->height << " Width: " << img->width;
CvMat* imgR= cvCreateMat(img->width,img->height,CV_8UC1);
CvMat* imgG= cvCreateMat(img->width,img->height,CV_8UC1);
CvMat* imgB= cvCreateMat(img->width,img->height,CV_8UC1);
cvSplit(&img, imgB, imgG, imgR, NULL);
cvWaitKey(0);
cvReleaseImage(&img);
cvDestroyWindow("Example1");
return 0;
문제는 라인 cvSplit(&img, imgB, imgG, imgR, NULL);
입니다. 이 프로그램은 항상 추락하고 나는 왜 그런지 모른다.
EDIT1 : 예외 :
오류 - (206) 인식 또는 지원되지 않는 어레이 형
Edit2가 :
An error occurred.
..\..\..\..\ocv\opencv\src\cxcore\cxconvert.cpp:877: error: (-215) dvec[j].size(
) == src.size() && dvec[j].depth() == src.depth() && dvec[j].channels() == 1 &&
i < src.channels()
: 난
img
대신
&img
로 사용하는 경우 I이 예외를 얻을
솔루션 : 나는 cv :: Mat, cvMat 및 IplImage 사이의 차이점 이 솔루션입니다 :
IplImage *r = cvCreateImage(cvGetSize(img), img->depth, 1);
IplImage *g = cvCreateImage(cvGetSize(img), img->depth, 1);
IplImage *b = cvCreateImage(cvGetSize(img), img->depth, 1);
cvSplit(img, b, g, r, NULL);
업데이트 게시 – vo1d
고맙습니다 – vo1d