c++ - OpenCV - 计算图像的边缘强度

标签 c++ opencv image-processing canny-operator

我是图像处理的新手,我需要计算图像中存在的边缘强度。假设您有一张图片并为​​该图片添加了模糊效果。这两个图像的边缘强度不同。我需要分别计算两个图像的那个边缘强度。

到目前为止,我已经使用下面的代码对图像进行了精明的边缘检测。

  Mat src1;
  src1 = imread("D.PNG", CV_LOAD_IMAGE_COLOR);
  namedWindow("Original image", CV_WINDOW_AUTOSIZE);
  imshow("Original image", src1);
  Mat gray, edge, draw;
  cvtColor(src1, gray, CV_BGR2GRAY);
  Canny(gray, edge, 50, 150, 3);
  edge.convertTo(draw, CV_8U);
  namedWindow("image", CV_WINDOW_AUTOSIZE);
  imshow("image", draw);
  waitKey(0);
  return 0;

有什么方法可以计算这个边缘图像的强度..?

最佳答案

mean会给你图像的平均值。如果你像上面那样使用 Canny,你可以这样做:

Scalar pixelMean = mean(draw);

要仅获取边缘像素的平均值,您也可以使用图像作为 mask :

Scalar edgeMean = mean(draw, draw);

不幸的是,由于 Canny 将所有边缘像素设置为 255,您的均值将始终为 255。如果这是您正在寻找的度量,您可能需要使用 Sobel(在高斯模糊之后)并计算梯度以获得相对边缘强度。

关于c++ - OpenCV - 计算图像的边缘强度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27046357/

相关文章:

C++ 创建模板 T 对象的拷贝

opencv - 使用 OpenCV 获取前景蒙版

c# - 如何提高窗口电话 8.1 中的性能方法 GetThumbnailAsync

c++ - boost::stable_vector 的 capacity 成员函数不返回分配的容量

c++ - Qt Connect 无法连接到插槽

c++ - 我应该什么时候终止 MPI 子进程?

c++ - OpenCV imwrite 保存黑色 png

python - python中的对象跟踪

python - 为什么使用 PIL 和 pytorch 对图像进行双线性缩放会产生不同的结果?

python - 如何使用 OpenCV 获得金属光泽物体的轮廓