이상한 문제가 있습니다. 내가 이미지를 cvCvtColor를 사용하는 경우 그것은 작동하지만 난 그것에 cvCvtColor을 해당 이미지를 수정하고 사용하려는 경우 오류가 :OpenCV 오류 : 입력 인수의 크기가 일치하지 않습니다.
: 내가 출력으로 가지고 있기 때문에 가OpenCV Error: Sizes of input arguments do not match() in cvCvtColor, file /build/buildd-opencv_2.1.0-3-i386-PaiiLK/opencv-2.1.0/src/cv/cvcolor.cpp, line 2208 terminate called after throwing an instance of 'cv::Exception'
이 오류가 없어야합니다
targetImage->width =300, targetImage->height =300 cap->width =300, cap->height =300
즉, 크기는 같습니다. 그래서 그것은 말도 안돼. 가능한 해결책은 없습니까? 이것은 서브 이미지 코드
printf("\ntargetImage->width =%d, targetImage->height =%d ",targetImage->width,targetImage->height);
cap = cvCreateImage(cvSize(targetImage->width,targetImage->height), IPL_DEPTH_8U, 1);
cvCvtColor(targetImage, cap, CV_BGR2GRAY);//HERE NO PROBLEM
CvRect xargetRect = cvRect(0,0,300,300);
subImage(targetImage, &showImg, xargetRect);
cap = cvCreateImage(cvSize(targetImage->width,targetImage->height), IPL_DEPTH_8U, 1);
printf("\ntargetImage->width =%d, targetImage->height =%d ",targetImage->width,targetImage->height);
printf("\ncap->width =%d, cap->height =%d ",cap->width,cap->height);
cvCvtColor(targetImage, cap, CV_BGR2GRAY); //HERE THE PROBLEM
감사
:
관련 코드는 여기에
/// Modifies an already allocated image header to map
/// a subwindow inside another image.
inline void subImage(IplImage *dest, const IplImage *orig, const CvRect &r) {
dest->width = r.width;
dest->height = r.height;
dest->imageSize = r.height * orig->widthStep;
dest->imageData = orig->imageData + r.y * orig->widthStep + r.x * orig->nChannels;
dest->widthStep = orig->widthStep;
dest->roi = NULL;
dest->nSize = sizeof(IplImage);
dest->depth = orig->depth;
dest->nChannels = orig->nChannels;
dest->dataOrder = IPL_DATA_ORDER_PIXEL;
}
는 서브 이미지의 코드를 게시 할 수 있습니까? – razlebe
방금 지연에 대해 귀하의 의견을 보았습니다;) – marinila
'widthStep'과'imageSize'가 둘 다 올바르지 않다고 생각합니다. 서브 우퍼 때문에 새로운 이미지의 크기에 따라 다시 계산해야합니다. –