【发布时间】:2014-02-25 19:33:14
【问题描述】:
我将图片加载到 original_pre,大小为 160x60,以下是代码
original_pre = cvLoadImage(input, 0);
int border = 5;
CvMat* original_mat = cvCreateMat(original_pre->height-2*border, original_pre->width-2*border, CV_8UC3);
original = cvCreateImage(cvSize(original_pre->width-2*border, original_pre->height-2*border), original_pre->depth, original_pre->nChannels);
cvGetSubRect(original_pre, original_mat, cvRect(border,border,original_pre->width-2*border,original_pre->height-2*border));
cvFloodFill(original_mat,cvPoint(0,0),cvScalarAll(0),cvScalarAll(1),cvScalarAll(1));
CvMat* original_open_mat = cvCreateMat(original_pre->height-2*border, original_pre->width-2*border, CV_8UC3);
CvMat* temp = cvCreateMat(original_pre->height-2*border, original_pre->width-2*border, CV_8UC3);
cout<<original_mat->width<<" "<<original_mat->height<<" "<<original_open_mat->width<<" "<<original_open_mat->height<<" "<<CV_MAT_TYPE(original_mat->type)<<" "<<CV_MAT_TYPE(original_open_mat->type)<<" "<<CV_8UC3<<endl;
cvMorphologyEx(original_mat,original_open_mat,temp,NULL,CV_MOP_OPEN);
floodfill 操作后 original_mat 和 original_open_mat 的类型不同。 打印的结果是
150 50 150 50 0 16 16
OpenCV Error: Assertion failed (src.size() == dst.size() && src.type() == dst.type()) in cvMorphologyEx, file /home/ataosky/software/OpenCV-2.4.3/modules/imgproc/src/morph.cpp, line 1353
original_mat 的类型为 0,而 original_open_mat 的类型为 16。 为什么?
【问题讨论】:
标签: c++ opencv image-processing computer-vision