python边缘探测器 - 掩盖该区域是完全黑色的

时间:2016-08-04 09:28:42

标签: python opencv image-processing scikit-image

我在图像上使用了canny边缘检测器。 它检测到图像中的某些区域以及其他未显示的区域。 现在,我希望在原始图像上它会掩盖完全黑色的区域。 我该怎么办?

我正在使用python和skimage或opencv(无关紧要)

from skimage.feature import canny
from skimage.morphology import closing
import skimage.io
import numpy as np
import os
import matplotlib.pyplot as plt
import cv2

img = skimage.io.imread("test.jpg",as_grey=True)
fig, ax = plt.subplots(1, 1, figsize=(20,20))
ax.imshow(img,'gray')
ax.set_axis_off()
plt.show()

edges = canny(img)

close = closing(edges)

fig, ax = plt.subplots(1, 1, figsize=(20,20))
ax.imshow(close,'gray')
ax.set_axis_off()
plt.show()

Original Image After canny and closing

现在我想要的是白色部分(在第二个图像中)将是唯一将在原始图像中显示的部分(遮罩)

1 个答案:

答案 0 :(得分:1)

您可以使用以下方法在RGB图像上应用二进制蒙版:

close_BGR = cv2.cvtColor(close, cv2.COLOR_GRAY2BGR)
# Assuming that the img is of RGB format
masked_image = cv2.min(close_BGR, img)