如何确定照片的亮度值? 这是我的代码,我不明白如何确定它:
def rgb2hsv(img_path):
img = cv2.imread(img_path)
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
return hsv
有什么想法吗?
答案 0 :(得分:1)
不确定图像的“亮度值” 是什么意思,但是无论您是什么意思,它都存储在图像的 Value 通道(即第3通道)中您已经计算出的色相,饱和度和值图像。
因此,如果您想要整个图像的单个平均亮度值,则可以使用:
hsv[...,2].mean()
如果您要为图像中最亮的点设置一个峰值亮度数字:
hsv[...,2].max()
如果要在图像的每个点上使用灰度“ map” 亮度,只需显示或保存第三个通道:
cv2.imwrite('brightness.png',hsv[...,2])
答案 1 :(得分:0)
在HSV中,“值”是颜色的亮度,并随颜色饱和度而变化。范围是0到100%。值为“ 0”时,颜色空间将完全为黑色。随着值的增加,颜色空间的亮度会提高并显示各种颜色。“
因此使用OpenCV方法:
library(tidyverse)
tq84n2 <- function(template, vec) {
crossing(template, grp = vec) %>%
unite(template, template, grp, remove = FALSE) %>%
group_by(grp) %>%
summarise(template = str_c(template, collapse=" ")) %>%
pull(template)
}
tq84n2(v1, 1:2)
#[1] "bar_1 baz_1 foo_1" "bar_2 baz_2 foo_2"
将图像从一种颜色空间转换为另一种颜色空间。您可以使用:
cvCvtColor(const CvArr* src, CvArr* dst, int code)
然后计算第三通道V的直方图,即亮度。
可能对您有帮助!
答案 2 :(得分:0)
如果您需要图像中最亮的像素,请使用以下代码:
import numpy as np
import cv2
img = cv2.imread(img_path)
img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
h,s,v = cv2.split(img_hsv)
bright_pixel = np.amax(v)
print(bright_pixel)
# bright_pixel will give max illumination value in the image