我正在计算两个图像的均值图像,不知道在OpenCV中使用功能mean()的正确方法。
Mat img1,img2,img3;
img1=imread("picture1.jpg");
img2=imread("picture2.jpg");
img3=mean(img1,img2);
Run Code Online (Sandbox Code Playgroud)
但是它说
R6010
-abort() has been recalled
Run Code Online (Sandbox Code Playgroud)
如何获得img1和img2的平均值?谢谢。
根据opencv文档:
“函数均值独立地为每个通道计算数组元素的平均值M,然后将其返回:”
这意味着它应该为图像的每一层返回一个标量,第二个参数是执行计算的像素掩码
您是否只是尝试做这样的事情?
img3 =(img1 + img2)* 0.5;
[编辑]为避免值大于255造成的损失,您可能应该在执行计算之前将图像转换为CV_32F,然后使用ConvertTo上的cv :: convertTo opencv文档将操作结果转换为CV_8U
您可以使用cv::accumulate:
Mat img3 = Mat::zeros(img1.size(), CV_32F); //larger depth to avoid saturation
cv::accumulate(img1, img3);
cv::accumulate(img2, img3);
img3 = img3/2;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5796 次 |
| 最近记录: |