在OpenCV中使用cv :: reduce方法时不支持的格式或格式组合

ha9*_*3ar 5 opencv types mismatch

我正在使用OpenCV 2.4.2,我试图(tmpl(32x44), subj(32x44))沿着行和列对两个矩阵进行投影.我已经初始化了一个结果矩阵,rowProjectionSubj(subj.rows,1,CV_8UC1)然后我打电话cv::reduce(subj,rowProjectionSubj,1,CV_REDUCE_SUM,-1);

为什么抱怨类型不匹配?我一直类型相同(通过保持dtype=-1cv::reduce.我得到的tmplsubj做的对象cv::imread("image_path",0),即在扫描灰度图像.

ha9*_*3ar 6

我可能不对,但是当我看到这个之后:

http://answers.opencv.org/question/3698/cvreduce-gives-unsupported-format-exception/?answer=3701#post-id-3701

通过一个小实验并使用一个名为“寄存器数学”的老朋友,我意识到当你将两个8位数字相加时,你需要考虑一个8+1+1位寄存器来存储总和,因为它可能有进位输出。因此,reduce 的任何结果都应该比源有更大的空间,即如果源是 8 位无符号的,则它应该至少是 16 位无符号或有符号的;如果要用于某些产品计算之类的东西,也可能是 32 位的......

注意:目标类型必须在 cv::reduce 方法中明确说明。请关注我的 openCV 链接以获取更多信息。