Webカメラの制御
v4l2-ctl (Windows版)
GUI4CV2_TkinterにWebカメラからの映像を取り込む機能を考えているのですが、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が試した内容では不具合は起きなかった。。。責任は取れません)
手順
- nuget cli入手
- nugetでpythonをインストール(インストールと言ってもダウンロードしてるだけ?)
- venvで仮想環境作成
- vscodeでPythonインタープリタを選択
- vscodeでpip install opencv等
- 試しにGUI4CV2_Tkinterを起動
こんな感じでしょうか。
1.nuget cli入手
www.nuget.org
2.nuget cliでPythonインストール
適当なフォルダを作成し、ダウンロードした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.vscodeでPythonインタープリタを選択
./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以上だったかと。
GUI4CV2_Tkinterについて
GUI4CV2_Tkinterとは?
GUI for OpenCV-Python with Tkinter
PythonでOpenCVを使って画像処理を行う際、プログラム書いて実行して画像確認。。。って面倒ですよね。
横着なdanpapaは、GUIで画像を見ながら調整して。。。というものを作ってみました。見た目や機能はシンプルですが、なかなか良いかと。
まだ作成中ですが、公開しておきます。機能追加など簡単に出来るように設計したつもりなので、いろんな機能を追加して貰えたらと。
あ、忘れてた。danpapaは画像処理初心者です。全く知識ありませんw
開発環境
OSは最近お気に入りのDebian+Xfce4でvscodeを入れてPython, OpenCV-Python, Numpy, Tkinterを使ってます。
Python使っていれば、殆どインストールされていると思うので、簡単に動作するはずです。
GUI4CV2_Tkinteの概要
GUI4CV2_Tkinteは2つに分かれています。
1,OpenCVをGUIで操作するライブラリ
2,上記ライブラリを組み合わせて画像処理をカスタマイズできるアプリ
メインは1で2はおまけ程度(修正余地満載)です。
GUI4CV2_Tkinte 画像、動画、関連リンク
画像(ライブラリ部)
画像(アプリ部)
動画(ライブラリ部)
youtu.be
動画(アプリ部)
youtu.be
GUI4CV2_Tkinteの使い方
(以下はこれから記事を追加していく予定です。)
・OpenCVをGUIで操作するライブラリの使い方
・OpenCVをGUIで操作するライブラリの機能追加方法
・アプリの使い方
GUI4CV2_Tkinteの機能追加(予定)
・今後、欲しい画像処理があれば都度追加していく予定です
・アプリは組み合わせた処理のPythonコードを出力できるようにしたいと考えています。
(もちろんこの場合はGUIは邪魔なのでコードだけで実行できるように)
↑なかなかいい感じで、noCode/lowCode っぽい使い方が出来そうです
SWD4CS ーイベントの追加/削除ー
SWD4CS ーコントロールのプロパティ変更ー
SWD4CS ーコントロールの移動/サイズ変更ー
コントロールの移動
コントロールを選択状態にし、コントロール上でドラッグアンドドロップで移動
移動できない場合(いくつかあります)
- コントロール右上に「▼」マークがある場合はこのマーク上でドラッグアンドドロップ
- PropertyGridは上下のSplit上でドラッグアンドドロップ
(上下Splitを調整したい場合は、選択を解除してからSplit上でドラッグアンドドロップ)
コントロールのサイズ変更
コントロールを選択状態にし、周りに表示された小さい四角マーク上でドラッグアンドドロップ