Roc*_*son 2 python opencv numpy image-processing computer-vision
我有一组图像(不同焦距),在其中找到了二进制掩模。其中一些蒙版是重叠的,现在我想将所有这些蒙版添加在一起以生成一个大的图像蒙版。有没有办法将这些掩模添加在一起并仅考虑重叠区域一次。在考虑重叠区域时,应仅考虑具有最大边缘的区域(来自边缘检测)。
所以现在 mask 拥有所有图像的所有蒙版。现在我想将这些蒙版添加在一起。任何帮助表示赞赏。
这些是原始图像及其蒙版。 链接到图像
因此,如果橙色在重叠区域中具有更多数量的边缘检测点,则应予以考虑,而绿色应仅具有不常见的点。橙色和绿色是这里的两个蒙版。
for file in glob.glob("images/*.jpg")
img = cv2.imread(file)
ret, mask = cv2.threshold(img, 100, 255, cv2.THRESH_BINARY)
Run Code Online (Sandbox Code Playgroud)
这是使用 Python/OpenCV 将多个蒙版添加在一起的一种方法。
import cv2
# read masks
mask1 = cv2.imread('mask1.png').astype("float32")
mask2 = cv2.imread('mask2.png').astype("float32")
mask3 = cv2.imread('mask3.png').astype("float32")
mask4 = cv2.imread('mask4.png').astype("float32")
# add masks
result = 255*(mask1 + mask2 + mask3 + mask4)
result = result.clip(0, 255).astype("uint8")
# show results
cv2.imshow('result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
# save results
cv2.imwrite('mask1-4.png', result)
Run Code Online (Sandbox Code Playgroud)
面具:
所得组合掩模:
添加:
您也可以这样做:
import cv2
import numpy as np
# read masks
mask1 = cv2.imread('mask1.png')
mask2 = cv2.imread('mask2.png')
mask3 = cv2.imread('mask3.png')
mask4 = cv2.imread('mask4.png')
# make list
masks = [mask1, mask2, mask3, mask4]
# add masks
h, w, c = mask1.shape
result = np.full((h,w,c), (0,0,0), dtype=np.uint8)
for mask in masks:
result = cv2.add(result, mask)
# show results
cv2.imshow('result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
# save results
cv2.imwrite('mask1-4.png', result)
Run Code Online (Sandbox Code Playgroud)