1 回答
TA贡献1824条经验 获得超5个赞
我不熟悉您的图像类型,但希望可以在 Numpy 和 OpenCV 方面帮助您。
#!/usr/bin/env python3
import pylas
import cv2
import numpy as np
# Open file
las = pylas.read('W2.las')
# Extract all the red values into a Numpy array, likewise green and blue
R = las.points["red"]
G = las.points["green"]
B = las.points["blue"]
# Make a Numpy image by stacking the RGB values and converting to uint8
BGR = (np.dstack((B,G,R))>>8).astype(np.uint8)
# Convert to HSV
HSV = cv2.cvtColor(BGR, cv2.COLOR_BGR2HSV)
# Define lower and uppper limits of what we call "green"
range_lo = np.array([70,30,30])
range_hi = np.array([90,255,255])
# Mask image to only select greens
mask = cv.inRange(HSV,range_lo,range_hi)
# Change image to red where we found green
image[mask>0]=(0,0,255)
cv.imwrite("result.png",image)
目前,我不知道图像的形状,所以它是一条 4400 万像素的长线,但它只需要 areshape()即可使其正确。请注意,每个 True/False 值都mask将成为像素列表中的索引,并指示该像素是否为绿色。
您可能必须使用参数的下限值和上限值- 请参阅我的range
答案。
Stack Overflow 用户 @nathancy 在这里制作了一个相当简洁的 HSV 颜色选择器,带有滑块。
添加回答
举报