gpt4 book ai didi

python - 计算并绘制分割掩码像素

转载 作者:太空宇宙 更新时间:2023-11-03 21:39:40 25 4
gpt4 key购买 nike

我有以下图片:

Image

下面是该图像中的分割蒙版:

Segmentation mask

从上图中,我试图计算非零像素坐标。也就是说,我试图获取上面蒙版中实际云的所有像素。当我绘制这些非零像素时,结果是这样的:

Plot segmentation mask pixels

我的问题是:为什么上图中绘制的像素与分割蒙版中的像素不同,我该如何解决?我想从分割蒙版中获取云的像素。

代码:

# create matrix
canvas = np.zeros((img_h, img_w))

# read in image, convert to grayscale, and create mask
im_color = cv2.imread(first_row.path.values[0], cv2.COLOR_BGR2RGB)
im_gray = cv2.cvtColor(im_color, cv2.COLOR_BGR2GRAY)
_, mask = cv2.threshold(im_gray, thresh=110, maxval=255, type=cv2.THRESH_BINARY)

# bounding box coordinates for segmentation mask
ymin, ymax, xmin, xmax = 2, 222, 42, 521

# assign mask to coordinates on canvas
canvas[ymin:ymax,xmin:xmax] = mask[ymin:ymax,xmin:xmax]
y_coords, x_coords = np.where(canvas == 255.0)

# get pixel coordinates of nonzero pixels
pts = np.array(list(zip(x_coords, y_coords)))

# plot original image
fig1 = plt.figure()
ax1 = fig1.add_axes([0,0,1,1])
ax1.set_title('Original image')
plt.imshow(im_color)

# plot segmentation mask on canvas
fig2 = plt.figure()
ax2 = fig2.add_axes([0,0,1,1])
ax2.set_title('Segmentation mask on canvas')
plt.imshow(canvas)

# plot segmentation mask pixels
fig3 = plt.figure()
ax3 = fig3.add_axes([0,0,1,1])
ax3.set_title('Segmentation mask pixel coordinates')
plt.imshow(im_color, interpolation='none')
poly = patches.Polygon(pts)
ax3.add_patch(poly)
plt.show()

最佳答案

您可能正在寻找 matplotlib.pyplot.scatter()

似乎与阈值图像匹配

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

image = cv2.imread('1.png')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray, 110, 255, cv2.THRESH_BINARY)[1]

x, y = np.where(thresh > 0)
plt.scatter(y[::-1], x)
plt.title('Plot segmentation mask pixels')
plt.show()

关于python - 计算并绘制分割掩码像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57915388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com