###前提・実現したいこと
色に色を加算して、色の混合をしようとしています。Microsoft office付属のpicture managerの色の補正機能のようなことを、CUIにしたい、というのがわかりやすいでしょうか。
・第一目標: 加算後に桁あふれする場合には255で頭打ち
・第二目標:sinθかシグモイドのような関数を使って、値が飽和しないように補正量を調整
###発生している問題・エラーメッセージ
色を加算したときに、255を超えると値がオーバーフローして値が異常になります。
具体的には、数学上では255+1=256
なのですが、OpenCV上では255+1=1
(8ビットで桁あふれ?)します。
生+0 | 生+32 | 生+64 | 生+128 |
---|---|---|---|
###該当のソースコード
Python
1# -*- coding: utf-8 -*- 2import cv2 3import numpy as np 4 5FILENAME ="lenna.png" 6 7def generate_image(path,b,g,r): 8 # Load image 9 img = cv2.imread(path, cv2.IMREAD_COLOR) 10 #cv2.imshow("img",img) 11 #cv2.waitKey(0) 12 13 # Split image 14 img_b, img_g, img_r = cv2.split(img) 15 16 # Add required value 17 img_b = img_b + b 18 img_g = img_g + g 19 img_r = img_r + r 20 21 # Merge each cannels 22 img = cv2.merge([img_b, img_g, img_r]) 23 24 #cv2.imwrite("test.png",img) 25 return img 26 27def show_image(path,b,g,r): 28 img = generate_image(FILENAME,b,g,r) 29 cv2.imshow("B:%s G:%s R:%s"%(b,g,r),img) 30 cv2.waitKey(0) 31 32 33if __name__ == "__main__": 34 show_image(FILENAME,0,0,0) 35 show_image(FILENAME,32,32,32) 36 show_image(FILENAME,64,64,64) 37 show_image(FILENAME,128,128,128) 38
###試したこと
OpenCVの画像のビット数を変えたり、thresholdを使おうとしましたが、うまくいかずに今に至ります。
###補足情報(言語/FW/ツール等のバージョンなど)
Python3
回答2件
あなたの回答
tips
プレビュー