danpapa blog

趣味のプログラミング等について

Webカメラの制御

v4l2-ctl (Windows版)
GUI4CV2_TkinterWebカメラからの映像を取り込む機能を考えているのですが、Linux系とWindowsで実装できる機能に差が出てしまいます。
何が問題か?というと、Webカメラのフォーマット/フレームサイズ/フレームレート等の情報がWindowsでは取得できなくて。。。
Linux系ではv4l2-ctl (Video for Linux 2)を使用し、いろんな情報取得や設定ができるのですが、Windowsでは良さそうなツールが見つかりません。

ということで、さっそくv4w2-ctl (Video for Windows 2)というものを作ってみました。いつものように完成してませんが、欲しい情報は取得できるので公開しておきます。
github.com

GUI4CV2_Tkinterに組込み中

この画像はWindows上でGUI4CV2_TkinterのWebCameraライブラリを起動させているのですが、Windowsに接続されているカメラとフォーマット/フレームサイズ/フレームレートの情報が取得できています。

v4w2-ctlは4l2-ctlとほぼ同じ出力になるように作ったので、呼び出す側のプログラムもほぼ共通化できたかと。。。
世の中に無かったってことはあまり需要はないと思いますが、danpapaとしては満足。ただし、ソースコードは久しぶりのC++で汚いですw

Python開発環境の構築(Windows)

Python開発環境
今更ですが、Pythonの開発環境についてです。
Linux系であればtimeshiftやddで簡単にバックアップ&復元できるのですが、Windowsだと。。。
なので、danpapaは極力インストールを避けています。ということで、思い付きで試してみたので紹介します。
(danpapaが試した内容では不具合は起きなかった。。。責任は取れません)

手順

  1. nuget cli入手
  2. nugetでpythonをインストール(インストールと言ってもダウンロードしてるだけ?)
  3. venvで仮想環境作成
  4. vscodePythonインタープリタを選択
  5. vscodeでpip install opencv
  6. 試しにGUI4CV2_Tkinterを起動

こんな感じでしょうか。

1.nuget cli入手
www.nuget.org

2.nuget cliPythonインストール
適当なフォルダを作成し、ダウンロードしたnuget.exeをコピー、フォルダー内をターミナルで開く

nugetの使い方は必要であれば調べてください。

./nuget install python-full-x64

補足:
・path通してないので./が必要です。
python-full-x64としてますが、tkinterが欲しかったから、不要であればpythonだけでも良いかと。。。

3.venvで仮想環境作成
./python-full-x64.3.9.2/tools内でターミナルを開く

./python -m venv opencv

・path通してないので./が必要です。
・環境名をopencvとしてますが、./python-full-x64.3.9.2/tools内に作成されるので、変えたい場合はフルパスで指定

4.vscodePythonインタープリタを選択
./opencv/Scripts/python.exeを選択

注意:もしactivate出きない場合は2点確認してみてください。
・パスが長すぎませんか?
powershellを管理者権限で下記が必要かもしれません。

Set-ExecutionPolicy RemoteSigned

5.vscodeでpip install ・・・・
インタープリタ設定後、ターミナルを開き直すと画像のように仮想環境がactivateされます。pipで必要なものをインストールしてください。

6.試しにGUI4CV2_Tkinterを起動

これで完成。windowsを汚さずに環境構築が出来たと思います。
いらなくなったらフォルダー事削除してます。
ただし、この方法は普通の使い方ではないと思います(思い付いただけなので)
不具合あっても対応できないので、宜しく。

追記:この方法で不安な方はWinPythonというものもあります。解凍(展開)するだけなので楽ですが、容量が・・・
danpapaの方法では300MB程度ですが、WinPythonのいろいろてんこ盛りだと3GB以上だったかと。

noCode lowCode OpenCV-Python

noCode lowCode OpenCV-Python
GUI4CV2_TkinterでnoCode/lowCodeっぽいことをやれるようになりました。
これを作ったきっかけは、OpenCV-Pythonを使った画像処理が面倒なので。。。
既に世の中にあると思っていたのに、なかなか無いものですねぇ・・・
よいツールあったら教えてください。

動画
youtu.be
(良い画像が無くてDAGM 2007の画像を使用させて頂いてます。)

github
github.com

「GUI4CV2_Tkinterについて」に戻る

GUI4CV2_Tkinterについて

GUI4CV2_Tkinterとは?
GUI for OpenCV-Python with Tkinter
PythonOpenCVを使って画像処理を行う際、プログラム書いて実行して画像確認。。。って面倒ですよね。
横着なdanpapaは、GUIで画像を見ながら調整して。。。というものを作ってみました。見た目や機能はシンプルですが、なかなか良いかと。
まだ作成中ですが、公開しておきます。機能追加など簡単に出来るように設計したつもりなので、いろんな機能を追加して貰えたらと。
あ、忘れてた。danpapaは画像処理初心者です。全く知識ありませんw

開発環境
OSは最近お気に入りのDebian+Xfce4でvscodeを入れてPython, OpenCV-Python, Numpy, Tkinterを使ってます。
Python使っていれば、殆どインストールされていると思うので、簡単に動作するはずです。

GUI4CV2_Tkinteの概要
GUI4CV2_Tkinteは2つに分かれています。
1,OpenCVGUIで操作するライブラリ
2,上記ライブラリを組み合わせて画像処理をカスタマイズできるアプリ

メインは1で2はおまけ程度(修正余地満載)です。

GUI4CV2_Tkinte 画像、動画、関連リンク
画像(ライブラリ部)

画像(アプリ部)

動画(ライブラリ部)
youtu.be

動画(アプリ部)
youtu.be

github
github.com

GUI4CV2_Tkinteの使い方
(以下はこれから記事を追加していく予定です。)
OpenCVGUIで操作するライブラリの使い方
OpenCVGUIで操作するライブラリの機能追加方法
・アプリの使い方

GUI4CV2_Tkinteの機能追加(予定)
・今後、欲しい画像処理があれば都度追加していく予定です
・アプリは組み合わせた処理のPythonコードを出力できるようにしたいと考えています。
 (もちろんこの場合はGUIは邪魔なのでコードだけで実行できるように)
 ↑なかなかいい感じで、noCode/lowCode っぽい使い方が出来そうです

SWD4CS ーイベントの追加/削除ー

イベントの追加

  1. イベントを追加したいコントロールを選択
  2. 画面右の「Events」を選択(イベントリストが表示されます)
  3. 追加したいイベントをダブルクリック

(イベントの関数名は変更できません)

イベントの削除

  1. イベントを削除したいコントロールを選択
  2. 画面右の「Events」を選択(イベントリストが表示されます)
  3. 削除したいイベントをダブルクリック

全イベントの確認方法

  • 画面中央の「Events」を選択すると、イベント情報だけ確認できます。(編集はできません)
  • 画面中央の「Source」を選択すると実際に出力されるコードが確認できます(編集はできません)

実際の使い方
youtu.be

「SWD4CSについて」に戻る

SWD4CS ーコントロールのプロパティ変更ー

コントロールのプロパティ変更
コントロールを選択し、画面右の「Property」でプロパティを変更できます
f:id:danpapa_hry:20220327163551j:plain

一部のプロパティに対応 ー 対応リストはGithubの「対応プロパティ(Type)」
(プロパティ変更はできても、保存や読み込みが出来ない等)

「SWD4CSについて」に戻る

SWD4CS ーコントロールの移動/サイズ変更ー

コントロールの移動
コントロールを選択状態にし、コントロール上でドラッグアンドドロップで移動

移動できない場合(いくつかあります)

 (上下Splitを調整したい場合は、選択を解除してからSplit上でドラッグアンドドロップ
f:id:danpapa_hry:20220327162338p:plain

コントロールのサイズ変更
コントロールを選択状態にし、周りに表示された小さい四角マーク上でドラッグアンドドロップ

「SWD4CSについて」に戻る