python - Python Open CV canny正在检测除边缘以外的所有内容

标签 python opencv

Canny正在检测除道路以外的所有地方的边缘。
这是原始图像。
https://imgur.com/a/O4ZVvb6

这是一个示例图像。
https://imgur.com/a/AqENNbq

我已经尝试过使用Canny阈值。
并应用高斯模糊,中值模糊,bilateralFilter,

我也尝试过先使用黑白图像阈值拟合器,但是问题是地形会稍微改变颜色并导致问题。

import numpy as np
from PIL import ImageGrab
import cv2
import time

def screen_record(): 
    last_time = time.time()
    while(True):

        # record upper left corner of screen to get the image. 
        printscreen =  np.array(ImageGrab.grab(bbox=(0,40,1098,728)))
        print('loop took {} seconds'.format(time.time()-last_time))
        last_time = time.time()
        color = cv2.cvtColor(printscreen, cv2.COLOR_BGR2GRAY)
        canny = cv2.Canny(color, 20, 100)
        cv2.imshow('edges',canny)

        if cv2.waitKey(25) & 0xFF == ord('q'):
            cv2.destroyAllWindows()
            break

screen_record()

我希望只有一条实线。
像下面的图像。
https://imgur.com/a/09vTE9e

最佳答案

您可以同时使用打开和关闭操作来过滤canny中的嘈杂边缘。代码如下。

import numpy as np
import cv2
import matplotlib.pyplot as plt

img = cv2.imread('vLnzxEs.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
canny = cv2.Canny(gray, 20, 100)

# visualize the canny image
plt.figure
plt.imshow(canny, cmap='gray')

#decleare kernel for closing and opening operations
kernel = np.ones((75,75),np.uint8)
# apply closing and opening
closing = cv2.morphologyEx(canny, cv2.MORPH_CLOSE, kernel)
opening = cv2.morphologyEx(closing, cv2.MORPH_OPEN, kernel)

# visualize the opening 
plt.figure
plt.imshow(opening, cmap='gray')

输出看起来像

that

关于python - Python Open CV canny正在检测除边缘以外的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57636662/

相关文章:

python-3.x - 如何使用opencv python查找图像中的最小矩形?

python - 如何在 Python ElementTree 中插入子元素

python - PyQt Python - 为 QPushButton 创建鼠标右键单击

python - 在python中检测图像中的彩色点?

c++ - 如何处理霍夫变换中的负 rho 值?

python - 使用 python 从图像集中提取 hog 特征时出错

opencv - 需要安装Lisp GNU科学库(GSLL)的帮助

python - 使用 CGI Python 将网页重定向到主页

python - XPath:通过当前节点属性选择当前和下一个节点的文本

python - Datastax Cassandra 上的 CCM - Python 2.6 错误和创建本地集群失败