前提・実現したいこと
画像の輝度を調べ、レベル分けしたくて、以下のURLを参考にし(インデント等調節し)
プログラムを回してみました。
このURLの#2
すると、出力結果に書いたように返されてしまい、結果を出せません。
どこを直せばよいのでしょうか
該当のソースコード
import numpy as np import cv2 import sys from collections import namedtuple #brange brightness range #bval brightness value BLevel= namedtuple("BLevel", ['brange', 'bval']) #all possible levels _blevels= [ BLevel(brange=range(0, 24), bval=0), BLevel(brange=range(23, 47), bval=1), BLevel(brange=range(46, 70), bval=2), BLevel(brange=range(69, 93), bval=3), BLevel(brange=range(92, 116), bval=4), BLevel(brange=range(115, 140), bval=5), BLevel(brange=range(139, 163), bval=6), BLevel(brange=range(162, 186), bval=7), BLevel(brange=range(185, 209), bval=8), BLevel(brange=range(208, 232), bval=9), BLevel(brange=range(231, 256), bval=10), ] def detect_level(h_val): h_val= int(h_val) for blevel in _blevels: if h_val in blevel.brange: return blevel.bval raise ValueError("Brightness Level Out of Range") def get_img_avg_brightness(): if len(sys.argv) < 2: print("USAGE: python3.7 brightness.py <image_path>") sys.exit(1) img= cv2.imread(sys.argv[1]) hsv= cv2.cvtColor(img, cv2.COLOR_BGR2HSV) _, _, v= cv2.split(hsv) return int(np.average(v.flatten())) if __name__== '__main__': print("the image brightness level is:{0}".format(detect_level(get_img_avg_brightness())))
出力結果
USAGE: python3.7 brightness.py <image_path> An exception has occurred, use %tb to see the full traceback. SystemExit: 1
試したこと
プログラムを理解していないこともあり、画像読み込むところをしなきゃと思い、cv2.imreadのところに画像のファイルパスを記入したのですが、うまくいきませんでした
回答1件
あなたの回答
tips
プレビュー