我正在研究一個物體檢測問題,我必須檢測小型彩色汽車。我使用顏色作為目標對象的主要特征表示,并應用直方圖反投影。然而,如您所知,很難保持顏色一致性,因為顏色的照度變化很大。然而,如果我可以測量亮度如何變化,我就可以控制顏色的變化。因此,我將視頻幀轉換為 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。
添加回答
舉報
0/150
提交
取消