C++ 如何指定MatExpr的结果类型?
我的代码中有以下表达式:C++ 如何指定MatExpr的结果类型?,c++,opencv,C++,Opencv,我的代码中有以下表达式: *h=(*R)/(*G)+(*R)) 其中R、G和B是uchar的Mat指针,因为有除法,我想将答案转换为float 所以我试过这个 *h=Mat_uuz((*R)/(*G)+(*R)) 但我也因此受到指责 我该怎么做 您需要将矩阵*R转换为浮点数。使用方法Mat::convert_to。假设R8是uchar的矩阵,您可以按如下方式创建浮点矩阵: Mat R32; R8.convertTo(R32,CV_32F); 这在OpenCV中有很好的解释 注1:此表达式使用u
*h=(*R)/(*G)+(*R))代码>
其中R、G和B是uchar
的Mat指针,因为有除法,我想将答案转换为float
所以我试过这个
*h=Mat_uuz((*R)/(*G)+(*R))代码>
但我也因此受到指责
我该怎么做 您需要将矩阵*R转换为浮点数。使用方法Mat::convert_to
。假设R8是uchar的矩阵,您可以按如下方式创建浮点矩阵:
Mat R32; R8.convertTo(R32,CV_32F);
这在OpenCV中有很好的解释
注1:此表达式使用uchars执行除法,然后将结果重新解释为float,这是错误的Mat
仅用于简化已浮动数组的元素访问
注2:大多数时候不需要使用指针来填充。谢谢,所以现在我在未知函数中得到了“OpenCV错误:错误参数(当加法/减法/乘法/除法函数中的输入数组具有不同类型时,必须显式指定输出数组类型”),文件:\slave\builds\wininstallermagapack\src\opencv\modules\core\src\arithm.cpp,第1303行',那么如何将输出类型指定为浮点型?尝试使用Mat::convert\u to()
将所有矩阵转换为浮点型。这不会有性能问题吗?这段代码应该在移动设备上的每一帧上运行,我希望尽可能减少分配,当然,在运行时尽可能地减少,分配新的浮点矩阵将花费一些钱。如果需要获得性能,则需要进行像素级处理(而不是矩阵表达式)。