Hiromi1623
@Hiromi1623

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

明度増加による色の変化について

解決したいこと

Pythonで対向車の検出率を向上させるために明度調整を行って検出率を上げる方法を考えました。
rgbからhsvに変換するプログラムを作成して明度を上昇させたのですが、1.0から1.1にあげた瞬間、ヘッドライトや街頭などの白い部分が真っ黒になってしまいました。
明度は上昇させると白に近づくらしいですが、なぜなのでしょうか?それと対処法はありますか?

発生している問題・エラー

明度増加による色の反転

該当するソースコード

import glob

file=glob.glob("C:/読み込むファイル/*.jpg")
print(file)
import cv2
import numpy as np

i=0
for x in file:
 print(x)
 img=cv2.imread(x)
 img_hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV) 
 h_deg = 0 
 s_mag = 1.0 
 v_mag = 1.1
 
 img_hsv[:,:,(0)] = img_hsv[:,:,(0)]+h_deg 
 img_hsv[:,:,(1)] = img_hsv[:,:,(1)]*s_mag
 img_hsv[:,:,(2)] = img_hsv[:,:,(2)]*v_mag 
 img_bgr = cv2.cvtColor(img_hsv,cv2.COLOR_HSV2BGR)
 
 cv2.imwrite("C:/保存するファイル/"+str(i)+".jpg",img_bgr)

 i+=1
print("finish")

自分で試したこと

プログラムの実装

0

1Answer

おそらくですが上限値(おそらく255)を超えたピクセルは逆側に行くからだと思います。
例:
元の値 240
240*1.1=264
255が上限なので逆側(つまりは黒側)0から数え直しになります。
264-256=8 (0~255なので256を引く)
よって計算結果が8になるので黒になります。

changedV()を使うことで回避出来るみたいです。

1Like

Comments

Your answer might help someone💌