C++を使ってOpenCVにトラックバーを追加する方法
トラックバー(Trackbar)は、OpenCVでさまざまなパラメータを直感的に操作するためのスライダー型のUI部品です。トラックバーを活用すれば、ソースコード内の数値をその都度書き換えて再コンパイルする必要がなくなり、明るさやコントラストなどのパラメータをマウス操作だけでグラフィカルに調整できます。これにより、リアルタイムに変化を確認しながら動的な画像エフェクトを作成することが可能になります。
以下のプログラムは、C++を使ってOpenCVウィンドウにトラックバーを追加し、画像の明るさとコントラストを動的に変更する例です。
サンプルコード
#include<iostream>
#include<opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;
int main() {
Mat original;//行列を宣言//
original = imread("sky.jpg");//画像を読み込んで行列に格納//
namedWindow("Slider");//画像を表示するためのウィンドウを宣言//
int light = 50;//トラックバーの初期値//
createTrackbar("Brightness", "Slider", &light, 100);//トラックバーを作成//
int contrast = 50;//トラックバーの初期値//
createTrackbar("Contrast", "Slider", &contrast, 100);//トラックバーを作成//
while (true) {
Mat edit;//行列を宣言//
int Brightness = light - 50;//トラックバーの値を取得して反映//
double Contrast = contrast / 50.0;//トラックバーの値を取得して反映//
original.convertTo(edit, -1, Contrast, Brightness);//トラックバーの変更内容を画像に適用//
imshow("Slider", edit);//編集後の画像を表示//
waitKey(50);
}
return(0);
}
コードのポイント
createTrackbar()関数は、第1引数にトラックバーの名前、第2引数に配置先のウィンドウ名、第3引数に現在値を格納する変数へのポインタ、第4引数にスライダーの最大値を指定します。この例では、スライダーの範囲(0~100)を実際の効果に変換しています。明るさは「light - 50」によって-50~+50の範囲に、コントラストは「contrast / 50.0」によって0.0~2.0倍の範囲にマッピングされ、convertTo()関数によって画像へ反映されます。
実行結果

プログラムを実行すると「Slider」という名前のウィンドウが表示され、「Brightness」と「Contrast」の2つのスライダーを動かすことで、画像の見た目がリアルタイムに変化します。
-
【PowerShell】Invoke-WebRequestを使ってWebサイトのリンクを取得する方法
PowerShellを使ってWebサイト上に存在するリンクを取得するには、まずInvoke-WebRequestコマンドレットで対象のWebページからデータを取得します。 $req = Invoke-WebRequest -uri https://theautomationcode.com $req 実行結果 コマンドを実行すると、Webページ全体のレスポンスが変数 $req に格納されます。このレスポンスオブジェクトには、HTMLコンテンツやステータスコード、リンク情報などさまざまなプロパティが含まれています。 Linksプロパティでリンク情報を取得する ページ内のリンクだけを取り出したい場
-
Windows・Mac・オンラインでGoogle Earthを録画する方法【完全ガイド】
世界は思っているよりずっと小さいもの。なぜそう言えるのか、ご存じですか?世界中を旅することが夢なら、旅行チケットに何千円も何万円も費やす必要はないかもしれません。Google Earthのようなプラットフォームが、あなたの世界一周の憧れを叶えてくれるからです。場所を入力するだけで、その土地のバーチャルな絶景を楽しむことができます。もちろん、実際にその場所へ足を運ぶ体験には及びません。しかし、例えば近いうちに家族や友人と一緒に旅行に行く予定の場所を、事前にGoogle Earthでバーチャルツアーとして共有したいと思ったことはありませんか?そんなとき、Google Earthの動画はどうやって撮