gpt4 book ai didi

opencv - 断言失败(src.type()== dst.type())在opencv

转载 作者:太空宇宙 更新时间:2023-11-03 21:48:19 26 4
gpt4 key购买 nike

我有一个 png 图像 pic.png,我通过使用下面的函数 createMask() 使其透明

    origpic = cvLoadImage("/root/opencv/newtutorial/newcode_try2/pic.png",1);
pic = createMask(origpic);

我有 createMask 函数

    IplImage* createMask(IplImage* image) {
IplImage *mask;
mask = cvCreateImage(cvGetSize(image), 8, 1);
cvInRangeS(image, cvScalar(255.0, 255.0, 255.0), cvScalar(255.0, 255.0, 255.0), mask);
cvNot(mask, mask);
return mask;
}

现在我的问题是当我用

扭曲它时

cvWarpPerspective(pic, neg_img, warp_matrix);

我收到这个错误

OpenCV Error: Assertion failed (src.type() == dst.type()) in cvWarpPerspective, 
file /root/OpenCV-2.3.1/modules/imgproc/src/imgwarp.cpp, line 3234
terminate called after throwing an instance of 'cv::Exception'
what(): /root/OpenCV-2.3.1/modules/imgproc/src/imgwarp.cpp:3234:
error: (-215) src.type() == dst.type() in function cvWarpPerspective

最佳答案

您必须创建与 pic 类型相同的目标图像。 createMask() 函数创建灰度图像。

所以在调用 warpPerspective 之前,添加这一行:

neg_img = cvCreateImage(cvGetSize(pic),8,1);

请注意,您可以为目标图像使用不同的尺寸,结果将被裁剪,或者根据 warp_matrix,周围填充黑色空间:

neg_img = cvCreateImage(CvSize(200,300),8,1);

而且,更好的想法是使用 c++ 接口(interface),使用 Mat 而不是 IplImage。它自动负责内存管理,更干净,更易于使用。您实际上必须使用 c 接口(interface)的唯一情况是某些嵌入式系统,其中编译器仅为 C。

关于opencv - 断言失败(src.type()== dst.type())在opencv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7963120/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com