如何指定MatExpr的结果类型?

时间:2013-04-16 17:39:34

标签: c++ opencv

我的代码中有这个表达式: *h = ((*R) / ((*G) + (*R))); 其中R,G和B是uchar的Mat指针,因为存在除法我希望将答案转换为float

的Mat指针

所以我试过这个 *h = Mat_<float>((*R) / ((*G) + (*R)));

但我得到了分段错误。

我该怎么办?

1 个答案:

答案 0 :(得分:2)

您需要将矩阵* R转换为浮点数。使用方法Mat::convert_to。假设R8是uchar矩阵,您可以按如下方式创建浮点矩阵:

Mat R32; R8.convertTo(R32,CV_32F);

introduction中对OpenCV进行了很好的解释。

注1:此表达式*h = Mat_<float>((*R) / ((*G) + (*R)))使用uchars执行除法,稍后将结果重新解释为float,这是错误的。 Mat_<float>仅用于简化已经浮动的数组的元素访问。

注意2:大多数情况下,您不需要使用Mat指针。