Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv 如何将掩码传递到cv::convertScaleAbs?_Opencv_Mask - Fatal编程技术网

Opencv 如何将掩码传递到cv::convertScaleAbs?

Opencv 如何将掩码传递到cv::convertScaleAbs?,opencv,mask,Opencv,Mask,我想节省一些CPU,而不是重复我感兴趣的矩形中的像素。 如何安全地扩展函数cv::convertScaleAbs以将8位掩码传递给它?您应该首先通过以下方式获取蒙版图像(例如,maskedImage): 然后,只需将此蒙版图像(即,maskedImage)传递给cv::convertScaleAbs()im,因为无法将8位蒙版传递给cv::convertScaleAbs,但始终可以使用Mat::operator()仅处理roi本身: convertScaleAbs(imgfc3(roi), ou

我想节省一些CPU,而不是重复我感兴趣的矩形中的像素。
如何安全地扩展函数cv::convertScaleAbs以将8位掩码传递给它?

您应该首先通过以下方式获取蒙版图像(例如,
maskedImage
):


然后,只需将此蒙版图像(即,
maskedImage
)传递给
cv::convertScaleAbs()

im,因为无法将8位蒙版传递给cv::convertScaleAbs,但始终可以使用Mat::operator()仅处理roi本身:

convertScaleAbs(imgfc3(roi), outputScaled, 255.0);
我很确定它不会迭代你不感兴趣的像素。但它的缺点是需要复制

。。。结果证明是的,您可以将相同的参数传递给convertScaleAbs,并且它可以工作:

Mat r = imgfc3(roi);
convertScaleAbs(r, r, 255.0);

但它仍然可以复制。

您正在操作的矩阵的类型是什么?在我的例子中,它是CV32uf。这仍然需要inputImage.rows*inputImage.cols调用std::abs的次数,最小值和最大值。我感兴趣的区域不是矩形,但是一个由两个圆r1>r2组成的环,其面积是可以的,所以正如我所说的,我发现用opencv api不可能做到这一点。为什么不用8位掩码手动编写自己版本的convertScaleAbs呢?这不应该这么棘手。
Mat r = imgfc3(roi);
convertScaleAbs(r, r, 255.0);