利用gabor核提取垂直线得到黑色imag图像

2024-10-03 04:29:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我了解gabor核的概念,以及它如何被用来识别方向边缘。所以我想用它来识别图像中的条形码线。在

然而,当我用gabor核过滤图像时,总是得到一个空白/黑色的结果。在垂直的边缘上,我需要做些什么来识别垂直的边缘,比如说,在哪里可以得到一个垂直的边缘?在

输入图像: enter image description here

结果: enter image description here

import cv2
import numpy as np  

def deginrad(degree):
    radiant = 2*np.pi/360 * degree
    return radiant

def main():
    src = cv2.imread('./images/barcode1.jpg', cv2.IMREAD_GRAYSCALE)

    # Introduce consistency in width
    const_width = 300
    aspect = float(src.shape[0]) / float(src.shape[1])
    src = cv2.resize(src, (const_width, int(const_width * aspect)))

    src = cv2.GaussianBlur(src, (7,7), 0)

    # Apply gabor kernel to identify vertical edges
    g_kernel = cv2.getGaborKernel((9,9), 8, deginrad(0), 5, 0.5, 0, ktype=cv2.CV_32F)
    gabor = cv2.filter2D(src, cv2.CV_8UC3, g_kernel)

    # Visual the gabor kernel
    h, w = g_kernel.shape[:2]
    g_kernel = cv2.resize(g_kernel, (20*w, 20*h), interpolation=cv2.INTER_CUBIC)

    cv2.imshow('src', src)
    cv2.imshow('gabor', gabor)  # gabor is just black
    cv2.imshow('gabor kernel', g_kernel)
    cv2.waitKey(0)

if __name__ == "__main__":
    main()

Tags: 图像importsrcmaindefnpgaborwidth