gpt4 book ai didi

python - 使用gabor内核提取垂直线会产生黑色图像

转载 作者:行者123 更新时间:2023-12-02 17:34:37 25 4
gpt4 key购买 nike

我了解gabor内核的概念以及如何将其用于识别方向边缘。所以我想用它来识别图像中的条形码行。

但是,当我用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()

最佳答案

您需要使用参数才能正确查看它。参数如下:

cv2.getGaborKernel(ksize, sigma, theta, lambda, gamma, psi, ktype)


g_kernel = cv2.getGaborKernel((31,31), 4, deginrad(0), 5, 0.5, 0, ktype=cv2.CV_32F)

结果是-

enter image description here

关于python - 使用gabor内核提取垂直线会产生黑色图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52642977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com