3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

OpenCVで画像の明るさを取得する方法

Last updated at Posted at 2022-03-20

はじめに

画像の明るさを知りたいなと思い、OpenCVを使えば取得できるような話を聞いたので試しに調べでやってみました。
OpenCVを使って画像からHSV(色相/彩度/明るさ)情報を取り出せるので、そこから画像のおおよその明るさを調べることができそうです。

やったこと

ファイルをを読み込んで明るさのヒストグラムをファイル出力します。画面には平均値と標準偏差を出力させます。

import cv2
import numpy as np
from matplotlib import pyplot as plt

file = 'test.jpg'

#画像を読み込んでHSV形式に変換
img = cv2.imread(str(file))
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
h,s,v = cv2.split(hsv)

#ヒストグラムをファイル出力
plt.hist(v.ravel(),256,[0,256]);
plt.savefig("Brightness_hist.png")

#明るさの平均値と標準偏差を画面表示
print("mean: " + str(np.mean(v)))
print("std : " + str(np.std(v)))

実行結果1

フィンランドの夜の画像です。マクドナルドの看板がまぶしいですが夜なので暗いです。

mean: 70.97144158681233
std : 64.48446228449781

値が少ない箇所が突出していて、平均値が70くらいです。なんとなく暗めの画像だというのがわかります。

実行結果2

フィンランドの昼の画像です。雪景色で日中なので明るくなりそうです。

mean: 154.91464773813883
std : 57.38790912426793

値が大きい箇所に集まっていて、平均値が155くらいです。なんとなく明るめ画像だという事がわかります。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?