7

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

为什么这抱怨类型不匹配?我保持类型相同(通过保持dtype=-1.cv::reduce我通过扫描灰度图像得到tmpl和对象。subjcv::imread("image_path",0)

4

1 回答 1

5

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

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 链接以获取更多信息。

于 2012-11-02T19:30:49.930 回答