python - 在 OpenCV 中测量边缘强度,梯度大小

标签 python algorithm opencv computer-vision

我有一个应用程序需要检查相机的焦点。为此,我想在单个轴 (1D) 上的几个预定义位置测量边缘强度(梯度幅度)。图像目标将是白色背景上黑色对象的简单打印输出。

我正在将 OpenCV 与 Python 结合使用。我知道 OpenCV 中有几种边缘检测算法,如 Canny、Sobel、laplace,但所有这些都是为了过滤图像。我想实际测量边缘的强度。 OpenCV 中是否有任何算法可以提供此功能?还是我只编写自己的算法来测量边缘强度?

最佳答案

这是一个 Python 版本:

def getGradientMagnitude(im):
    "Get magnitude of gradient for given image"
    ddepth = cv2.CV_32F
    dx = cv2.Sobel(im, ddepth, 1, 0)
    dy = cv2.Sobel(im, ddepth, 0, 1)
    dxabs = cv2.convertScaleAbs(dx)
    dyabs = cv2.convertScaleAbs(dy)
    mag = cv2.addWeighted(dxabs, 0.5, dyabs, 0.5, 0)
    return mag

mag = getGradientMagnitude(im)

关于python - 在 OpenCV 中测量边缘强度,梯度大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33679738/

相关文章:

algorithm - 相反方向的插入排序。已排序部分在右侧,未排序部分在左侧

c++ vector将所有元素存储为最后一个元素

c# - 如何使用 Emgu c# 去饱和图像

c++ - OpenCV 2.4.1 与 Qt 的静态链接

java - 8 拼图 : Solvability and shortest solution

java - 如何找到这两个函数的运行时间?

python - MRJOB 打开 JSON 文件 - Python

python - 从具有索引和值的矢量数据(字典)创建列表的函数

python - 如何读取Python cplex api中的变量值?

python - 在哪里放置与管理相关的自定义表单?