我有一张街道的照片,(街道的颜色变化很小),在一些帮助下,我能够裁剪街道的一部分,然后拍摄颜色的样本,然后计算颜色并计算平均值和stdv并为面具创建了下边界和上边界。
我拿了掩码输出并运行了closing = cv2.morphologyEx(output, cv2.MORPH_CLOSE, kernel)
我想拍摄所有正在关闭的白色像素,并创建一个x,y坐标列表。 然后我想取x,y坐标并创建另一个b,g,r值列表。
然后我可以通过
重新运行它blue=cropimg[:,:,0]; green=cropimg[:,:,1]; red=cropimg[:,:,2];
见图片,显示:原始,面具,关闭,裁剪区域:
答案 0 :(得分:1)
听起来你只是在寻找:
rgb = cropimg[mask,:] # or mask > 0, if mask is not a boolean array
将返回掩码
下的Nx3
像素数组
答案 1 :(得分:1)
为了获得您提出的列表,您可以这样做:
coords, colors = [], []
for y in range(closing.shape[0]):
for x in range(closing.shape[1]):
if np.all(closing[y, x] > 0):
coords.append((y, x))
colors.append(original[y, x])
因此,您将获得一张列表,其中包含原始图像中这些坐标中的白色坐标和BGR值。
答案 2 :(得分:1)
coords, colors = [], []
for y in range(closing.shape[0]):
for x in range(closing.shape[1]):
if np.all(closing[y, x] > 0):
coords.append((y, x))
colors.append(img[y, x])