分离图像中不同的多个元素(重叠的对象)

问题描述 投票:0回答:1

我的问题如下: 我有一个包含两个重叠对象的图像,我试图将它们分开以绘制每个对象(边缘)的轮廓。这是我的 Python 代码以及结果。

我尝试使用 Python 解决分离图像中重叠对象的问题。我使用的图像包含两个彼此重叠的对象。我的目标是提取并分离这两个物体以获得它们各自的轮廓。我实现了一个 Python 代码片段来解决这个问题。我的目标是获得与每个对象相对应的单独掩模或区域。 这是下载图片的链接

谷歌驱动器链接到图片

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

image_path = '/content/423628443_0.jpg'

image = cv2.imread(image_path, 0)

_, binary_image = cv2.threshold(image, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)

kernel = np.ones((3, 3), np.uint8)
opening = cv2.morphologyEx(binary_image, cv2.MORPH_OPEN, kernel, iterations=1)


closing = cv2.morphologyEx(opening, cv2.MORPH_CLOSE, kernel, iterations=1)

edges = cv2.Canny(closing, 30, 150)

contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

image_with_contours = cv2.cvtColor(image, cv2.COLOR_GRAY2BGR)
cv2.drawContours(image_with_contours, contours, -1, (0, 255, 255), 2)

plt.figure(figsize=(20, 5))

plt.subplot(1, 5, 1)
plt.imshow(image, cmap='gray')
plt.title('Original Image')
plt.axis('off')

plt.subplot(1, 5, 2)
plt.imshow(binary_image, cmap='gray')
plt.title('Binary Image')
plt.axis('off')

plt.subplot(1, 5, 3)
plt.imshow(opening, cmap='gray')
plt.title('Opening')
plt.axis('off')

plt.subplot(1, 5, 4)
plt.imshow(closing, cmap='gray')
plt.title('Closing')
plt.axis('off')

plt.subplot(1, 5, 5)
plt.imshow(cv2.cvtColor(image_with_contours, cv2.COLOR_BGR2RGB))
plt.title('Edges')
plt.axis('off')

plt.show()

这个Python脚本的结果:

python opencv image-processing computer-vision image-segmentation
1个回答
0
投票

扫描的pdf文件 它解释了几何形状 你能转换吗 文本和形状到 Word 文件 通过Python

© www.soinside.com 2019 - 2024. All rights reserved.