如何使用Python区分暗图像和亮图像?我正在尝试根据图像的亮度来过滤图像。
最佳答案
一种方法是更改用于表示图像的颜色空间,然后通过适当 channel 的平均值对其进行排序(如评论中建议的那样)。例如,HSL 表示的“L channel ”很好地突出了图像上的亮度。使用 opencv 从 RGB(红绿蓝)到 HSL(色相饱和度亮度)的转换非常容易:
import cv2
font = cv2.FONT_HERSHEY_SIMPLEX
imagedark = cv2.imread('testdark.jpg')
hsldark = cv2.cvtColor(imagedark, cv2.COLOR_BGR2HLS)
Lchanneld = hsldark[:,:,1]
lvalueld =cv2.mean(Lchanneld)[0]
cv2.putText(imagedark, str(lvalueld), (10,450), font, 3, (0, 255, 0), 2, cv2.LINE_AA)
image = cv2.imread('test.jpg')
hsl = cv2.cvtColor(image, cv2.COLOR_BGR2HLS)
Lchannel = hsl[:,:,1]
lvalue =cv2.mean(Lchannel)[0]
cv2.putText(image, str(lvalue), (10,450), font, 3, (0, 255, 0), 2, cv2.LINE_AA)
imagelight = cv2.imread('testbright.jpg')
hsllight = cv2.cvtColor(imagelight, cv2.COLOR_BGR2HLS)
Lchannell = hsllight[:,:,1]
lvaluel =cv2.mean(Lchannell)[0]
cv2.putText(imagelight, str(lvaluel), (10,450), font, 3, (0, 255, 0), 2, cv2.LINE_AA)
cv2.imshow('bright',imagelight)
cv2.imshow('orgid',image)
cv2.imshow('dark',imagedark)
输出:
关于python - 如何使用Python区分暗图像和亮图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59766704/