2
我有一个PNG图像pic.png
,我使它透明通过使用下面的函数createMask()
断言失败(src.type()== dst.type())在OpenCV中
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
对不起,我得到这个错误OpenCV错误:输入参数的大小不匹配(该操作既不是'数组操作数组'(其中数组具有相同的大小和类型),也不是'数组操作标量',也不是'标量op array')in binary_op,file /root/OpenCV-2.3.1/modules/core/src/arithm.cpp – Wazzzy
这是因为您尝试检查具有3通道标量间隔的单通道图像的范围。我无法猜测你为什么在那里实际使用那个呼叫,没有这一行,代码将是相同的。 – Sam
哦,我明白了。您必须将图像转换为灰度(cvCvtColor()),并将结果发送到checkrange。你有什么是3通道图像,检查范围,并试图存储在1通道图像的结果。错误! – Sam