我在图像上使用了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()
现在我想要的是白色部分(在第二个图像中)将是唯一将在原始图像中显示的部分(遮罩)
答案 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)