首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么垫子类型不同?

为什么垫子类型不同?
EN

Stack Overflow用户
提问于 2014-02-25 11:57:53
回答 1查看 200关注 0票数 0

我加载了一个大小为160x60的图像到original_pre,下面是代码

代码语言:javascript
复制
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);

在填充操作之后,original_mat和original_open_mat的类型是不同的。打印的结果是

代码语言:javascript
复制
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。为什么?

EN

回答 1

Stack Overflow用户

发布于 2014-02-25 19:33:15

我用一个简单的图像运行你的代码,它工作得很好..下面是代码和结果。我假设original_preoriginalIplImage*类型,因为它们没有出现在您的代码块中。

代码语言:javascript
复制
IplImage*   original_pre = cvLoadImage("G:\\test.png");
int border = 5;
    CvMat* original_mat = cvCreateMat(original_pre->height-2*border, original_pre->width-2*border, CV_8UC3);
IplImage* 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(50,55),cvScalarAll(255),cvScalarAll(0),cvScalarAll(0));
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);
cvSaveImage("G:\\temp_.jpg",original_open_mat);

原始图像

结果

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22004275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档