在使用Canny功能时,可以先敷面膜吗?

2024-09-29 23:20:09 发布

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

我一直在学习Canny边缘检测功能,Hough变换和在图像中选择一组特定边缘的遮罩。在

我只是想知道-我见过人们先应用这两个函数,然后再应用掩码。先敷面膜会提高表现吗?在

当然,如果你只在蒙版区域应用Canny函数和Hough变换,那会比将它们应用到整个区域然后选取遮罩区域要快得多。但也许我误会了。在

我不确定它是否相关,但我正在使用Python和OpenCV库。我知道它的函数不能对图像的一个子集进行操作。但我想知道为什么会这样。在


Tags: 函数图像功能区域opencv子集边缘掩码
1条回答
网友
1楼 · 发布于 2024-09-29 23:20:09

是的,你可以先敷面膜,但这会导致严重的不良后果。在

例如,考虑以下代码:

import numpy as np
import matplotlib.pyplot as plt
import scipy
from skimage import feature

# Create image
image = scipy.misc.face(gray=True)
plt.figure()
plt.imshow(image, cmap='gray')
plt.title('image')

# Create a simple mask
x, y = np.mgrid[:image.shape[0], :image.shape[1]]
mask = (x > 200) & (x < 500) & (y > 300) & (y < 700)
plt.figure()
plt.imshow(image * mask, cmap='gray')
plt.title('masked image')

# Find edges with both methods
edges1 = feature.canny(image, sigma=3)
edges1 *= mask

plt.figure()
plt.imshow(edges1, cmap='gray')
plt.title('Mask then find edges')

masked_image = image * mask
edges2 = feature.canny(masked_image, sigma=3)

plt.figure()
plt.imshow(edges2, cmap='gray')
plt.title('Find edges then mask')

结果如下:

enter image description hereenter image description hereenter image description hereenter image description here

注意,如果你在使用边缘检测器之前进行遮罩,你会得到这个奇怪的画面。这是因为遮罩会创建一开始就不存在的新边。在

相关问题 更多 >

    热门问题