如何使用Python区分暗图像和亮图像?

Raa*_*hra 2 python opencv

如何使用Python区分暗图像和亮图像?我正在尝试根据图像的亮度来过滤图像。

Cry*_*ckx 5

一种方法是更改​​用于表示图像的颜色空间,然后通过适当通道的平均值对其进行排序(如评论中建议的那样)。例如,HSL 表示的“L 通道”很好地突出了图像上的亮度。使用 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)
Run Code Online (Sandbox Code Playgroud)

输出 :

在此输入图像描述 在此输入图像描述

在此输入图像描述