为了账号安全,请及时绑定邮箱和手机立即绑定

如何将HSV颜色空间的V通道的值设置为恒定值

如何将HSV颜色空间的V通道的值设置为恒定值

摇曳的蔷薇 2023-10-05 16:55:11
我正在研究一个物体检测问题,我必须检测小型彩色汽车。我使用颜色作为目标对象的主要特征表示,并应用直方图反投影。然而,如您所知,很难保持颜色一致性,因为颜色的照度变化很大。然而,如果我可以测量亮度如何变化,我就可以控制颜色的变化。因此,我将视频帧转换为 HSV,因为 V 通道代表图像的亮度(亮度),我使用以下代码计算该通道的最小/最大平均值:import numpy as npimport cv2 as cvfrom matplotlib import pyplot as pltcap=cv.VideoCapture(r'C:/Users/kjbaili/Docum_changes.mp4')Mean_list=[]while cap.isOpened:    ret,frame=cap.read()    if ret!=True:        print("cant open Video, please check your source")        break    else:         HSV=cv.cvtColor(frame.copy(),cv.COLOR_BGR2HSV)     h,s,v=cv.split(HSV)        cv.imshow('HSV_image',HSV)     MEAN_V=v.mean()     Mean_list.append(MEAN_V)         print('mean_V',MEAN_V)     cv.waitKey(1)print('Minimum_ lightness  ', min(Mean_list))print('Maximum_lightness   ',max( Mean_list))cv.destroyAllWindows()结果是Minimum_ lightness   137.57618546786645Maximum_lightness    172.9926900112821所以通过观察视频,V通道的值从172-->137下降。因此,如果我将v通道的值设置为始终172,那么理论上视频中的颜色将是相同的。所以我的问题是:如果可能的话,我怎样才能将V通道的值设置为常数值= 172?提前致谢
查看完整描述

1 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

您可以使用 numpy 语法将通道的值设置为 Python/OpenCV 中的某个常量,如下所示

v[:,:] = 172


这会将图像中的每个 x,y 灰度值设置为 172。


查看完整回答
反对 回复 2023-10-05
  • 1 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信