ひきからじりつ

心境を記録中・・・

Webカメラを使ってPCディスプレイの明るさを自動で調節する方法

ついに見つけた...PCディスプレイの明るさを自動で調節する方法を...

部屋の明るさに応じて画面の明るさを調節してくれる自動調光機能、スマホやノートPCでは当たり前のこの機能が、僕のPCディスプレイには付いてない。

1日中PCを使っていると、画面の明るさを何度も調節しないと明るすぎたり暗すぎたりして見づらいし目も疲れる。そのたびにボタンをチマチマ押すのは手間だからPCから操作できるようにしてあるが、それでも自動で調節できればその方が良いに決まってる。

何かいい方法は無いかと散々調べたがかすりもせず、「よし、これはもう自分でそれ用のソフトを作るしかないな」などと肝心のスキルが無いことも忘れていきり立ってみたところで、具体的に何をどうすればいいのか見当もつかない。とりあえず、部屋の明るさを感知するためのセンサーが必要だな。

まず思いついたのはUSB接続の照度センサー。そんなものが果たしてあるのかと調べてみると意外にもいくつか見つかったが、高価だったり海外サイトでしか買えなかったり何かとハードルが高い。それならWebカメラはどうだろうか。

それで偶然たどり着いたのがこちらのページ。

Webcam as Ambient Light Sensor in Windows 7 - Super User

BackLight Unit coNTRoL should work :)

ん?なにやら「BackLight Unit coNTRoL(BLUntrl)」というものが使えるらしい。リンク先を見てみると・・・。

これだよこれ!!Webカメラを使って自動調光機能を実現してくれる神ソフト。あっけなく見つかって肩透かしを食らった感もあるが・・・いやそれにしても嬉しい!

用意するもの

・MCCSに対応したPCディスプレイ

BLUntrlを使うためにはディスプレイが「MCCS(Monitor Control Command Set)」という規格に対応している必要がある。BLUntrlの作者によると「Monitor Asset Manager」でチェックできるらしい。手持ちの「BenQ GW2470H」は対応していたし、そんなに特殊な機能じゃないと思う。 

Webカメラ

 

LOGICOOL ウェブカム HD画質 120万画素 C270

LOGICOOL ウェブカム HD画質 120万画素 C270

 

 

amazonで一番売れている「LOGICOOL C270」をチョイス。明るさを取得するだけならこれで十分だろうと思ったが、想像したよりきれいに撮れるし声も拾う。

・BLUntrl

BLUntrl

リンク先の中ほど「Binary」から入手できる。

・Hide-it!(任意)

Hide-it's home Page

基本的な使い方

Webカメラを繋いで「BLUntrl.exe」を起動する。

警告を無視する

いざ起動しようとしたら「WindowsによってPCが保護されました」という警告が出た。おそらくマイナーなソフトなので、マイクロソフトのリストに載っていないからだと思う。

SmartScreen とは?

セキュリティソフトで監査しても反応しなかったし僕は問題ないと判断した。「詳細情報」をクリックすると実行できるようになる。

f:id:h_imwikr:20171006150246p:plain

【追記】カメラの感度を調節する

C270の場合、露出を自動で調節してくれる機能がONになっているので、思うように明るさを変えるためにはそれをOFFにして露出を固定する必要がある。

BLUntrlのプレビューウィンドウをアクティブにした状態で「S」キーを押すと、C270の設定画面が開く。

f:id:h_imwikr:20171007145202p:plain

「RightLight」と「ゲイン」の自動補正をOFFにした後、「露出」と「ゲイン」を好みの値に調節すればOK。

より便利な使い方

ウィンドウを非表示にする

起動すると二つのウィンドウが開いて、タスクバーにもアイコンが表示される。BLUntrlの作者によるとHide-it!を使えばそれらを非表示にできるとのこと。

HIDEIT.EXEを起動して「Configuration」の「New」から新しいルールを追加する。

f:id:h_imwikr:20171006150301p:plain

「BLUntrl」と入力すれば、その文字列を含むウィンドウが非表示になる。

【追記】

もっといい方法があった。VBScriptを使えばウィンドウを非表示にして起動できる。

AutoBrightness.vbs

Set obj = WScript.CreateObject("WScript.Shell")
obj.Run ".\BLUntrl.exe", 0, False '0 : ウィンドウを非表示
Set obj = Nothing

AutoBrightness.vbsをBLUntrl.exeと同じフォルダに入れてクリックすればOK。

*BLUntrlを閉じたいときはタスクマネージャーからBLUntrl.exeの「タスクを終了」

スタートアップに登録する

あとはスタートアップに登録しておこう。BLUntr.exeとHIDEIT.EXEの二つのファイル(もしくはそのショートカット)【追記】AutoBrightness.vbsのショートカットをスタートアップフォルダ*1に置くだけ。

*1 Windows10なら「C:\Users\ユーザー名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup」

PS4でゲーム中も自動調光できる!

GW2470HはHDMI入力端子が二つあるので、片方をPCもう片方をゲーム機に割り当てている。今回の自動調光機能、実はHDMIケーブルが繋がってさえいればOKなので、PS4でゲーム中も自動調光が効く。

一つ問題点としては、これまでPCからPS4に入力を切り替えたいときはPCをスリープするだけでGW2470HのHDMI自動切替機能が働いてくれたが、今回の自動調光機能を使うためには当然PCをONにしておく必要があるのでこの方法が使えない。これまでの輝度調節と同じように切替のたびにボタンをチマチマ押すのは手間だから代替手段を探したところ、画面の出力をOFFにしてくれるソフトがあった。

ディスプレイ@OFFの詳細情報 : Vector ソフトを探す!

これでクリック一つで切り替えられるようになった。

【追記】

Windows10の場合、タスクバーにピン止めしておけばショートカットキーで開くことができる。例えば「ディスプレイ@OFF」を一番左にピン止めした場合は「windows」 + 「1」キーで入力が切り替えられる!

こうして完璧な自動調光機能を手に入れましたとさ。めでたしめでたし。

hiki-jiritsu.hatenablog.com