ma251

C#,Pythonを使い始めました.試したことや,ひっかかったことをメモしていくのだ(…

ma251

C#,Pythonを使い始めました.試したことや,ひっかかったことをメモしていくのだ(自分用).楽にできて,とりあえず動けばよし♪

最近の記事

【Python】トリミングした動画の縦横比を自動で整えたい

【状況】トラッキングした物体の範囲ぴったりで切り抜いて動画を作ると,絵的に窮屈だし,縦横比がバラバラで扱いづらい 【対処】余白部分を入れて,縦横比は切り抜き前の動画サイズに(だいたい)揃えて切り抜く 先に行った動画の切り抜きは,範囲がぴったりなので,データ処理用としては問題ないのですが,見せる動画としては,縦横比もバラバラですし,対象の周辺に少し余裕が欲しいと思いました. サイズの定義を考える切り抜く際に,上下左右に余白を適度に入れつつ,元画像の比率に(だいたい)合わせる

    • 【Python】動画内の指定オブジェクトを追跡して自動トリミング(3)

      【状況】特定した動画の領域を切り抜いて動画にしたい 【対処】ffmpegを使って切り抜いた動画を作成 前回,指定したオブジェクトが動く範囲の領域を求めたので,その領域だけを対象にmp4エンコードします.以前に作ったトリミング方法を利用します. 画像サイズの補正mp4にエンコードする際,画像サイズの縦横が16の倍数であることが望ましいので,値の補正を行います.ここでは,簡単にするため,領域右下の位置を縮める方法にします.幅と高さについて,//を用いて整数除算(商が整数のみと

      • 【Python】楽しようとmoviepy使ったのに結局ffmpeg

        【状況】動画のトリミングを楽にしたくてmoviepyを使ってたのに,トリミングサイズの不具合が見つかった 【対処】ffmpegを使う 楽しようとしたけど動画のトリミング&エンコードをしたくて,パッケージのインストールだけでよいmoviepy(1.0.3)を使っていたわけですが,特定の条件下においてトリミングサイズの不具合があることが分かりました.いつか修正されるかもしれませんが,ソースコードを書き換えないと使えなくなってしまうので今後のことを考えると,やりたいことが意図通り

        • 【Python】moviepy(1.0.3)の動画のクロップサイズ指定の不具合(たぶん)

          【状況】動画の(x1, y1)-(x2, y2)の領域を切り抜いて別動画にしてくれるはずが,サイズがわずかに小さく切り取られて動画にエンコードしても再生できない. 【対処】x2, y2に1ずつ加えて切り抜き関数を呼び出す(という嫌なやり方で対応できたけど・・・ライブラリ変えますw) 切り抜いた動画が再生できない!縦横16の倍数にしてmp4エンコードしたはずなのに,できたファイルが再生できない.ファイルの「プロパティ」→「詳細」でフレームサイズを確認すると,なぜか縦横2ずつ小

        【Python】トリミングした動画の縦横比を自動で整えたい

        • 【Python】動画内の指定オブジェクトを追跡して自動トリミング(3)

        • 【Python】楽しようとmoviepy使ったのに結局ffmpeg

        • 【Python】moviepy(1.0.3)の動画のクロップサイズ指定の不具合(たぶん)

          【Python】動画内の指定オブジェクトを追跡して自動トリミング(2)

          【状況】バウンディングボックス群を内包する長方形を求めたい 【対処】バウンディングボックス座標の最大値,最小値を求める 前回,指定したオブジェクトが動く範囲のバウンディングボックス群を求めているので,その続き.最大値・最小値を求めればよいので簡単ですね. 領域の初期値を設定最初のフレームの幅と高さの情報(frame.shape)を用いて,最大値・最小値の初期値を設定しておきます.frame.shape[1]にはフレームの幅,frame.shape[0]にはフレームの高さの

          【Python】動画内の指定オブジェクトを追跡して自動トリミング(2)

          【Python】動画内の指定オブジェクトを追跡して自動トリミング(1)

          【状況】動画内の複数のオブジェクトから選択して,そのオブジェクトの動く範囲を求めたい 【対処】YOLOv8を用いて検出したオブジェクトのバウンディングボックスを全て求める ゴールは,特定のオブジェクトの動く範囲を求めて,その範囲のみの動画を生成することです.今回は,オブジェクトを選択してトレースできるところまでです. まずはサンプルコードから公式サイトに,動画からフレームを切り出して処理をするひな形があるので,出発点として,そのまま使います.変えたのはvideo_path

          【Python】動画内の指定オブジェクトを追跡して自動トリミング(1)

          【Python】PyTorchのGPU版を使うのに少しつまづいた

          【状況】PyTorchで画像処理系の重い処理は厳しい.PyTorchにはGPU版があるけど,標準ではCPU版がインストールされるので,自分でインストールする必要がありました. 【対処】公式サイトに行ってダウンロード.ただし,使っているGPU(CUDAのバージョン)などによって選ぶ必要があります. 公式サイトを見る執筆時点で以下のような選択肢があります.なお,Python 3.8以降が必要,とあります.コマンドをコピーし,コマンドプロンプトにコピーするとダウンロードされます.

          【Python】PyTorchのGPU版を使うのに少しつまづいた

          【Python】YOLOv8で人を追跡

          【状況】映像に映っている人を追跡(トラッキング)したい.YOLOv8が良いらしい. 【対処】サンプルコード動かすだけで感動できる,のメモ 公式ページが充実サンプルもあるのでかなり参考になります(日本語だし!) 環境設定pythonがインストールされている環境でインストール(執筆に利用したバージョンは3.10.9;諸事情により若干古いバージョンを入れています). pip install ultralytics 関連するライブラリも(ある程度)自動的にインストールされます

          【Python】YOLOv8で人を追跡

          【Python】pythonのインストール設定とOpenCV見つからない問題

          【状況】他のライブラリを入れる際にバージョンによる相性があり,インストールをたまにするんだけど設定忘れるw 【対処】GPUを使うOpenCVをビルドして使った時の設定で,調べればすぐ出てくる普通の内容だけど,自分用にメモ. 設定箇所以下,3.10.9をインストールする例.■は画面が切り替わったときの見出し. ■ Install Python 3.10.9(64bit) 「Add python.exe to PATH」にチェックを入れて, →Customize instal

          【Python】pythonのインストール設定とOpenCV見つからない問題

          【Processing】画面分割(2D, 3D, 3D)+メニュー表示

          【状況】画面分割とメニュー表示を別々にやっていたので,合体してちゃんとできるのか試した!2D画面にプルダウンメニューを配置したい. 【対処】メニューは,メインウィンドウにしか出せないことが分かり,そこが注意点だった.2D描画のあとにメニュー書くと良いらしい,のメモ 合体させたい内容プルダウンメニューを2D画面に張り付けたい仕様上,個別のウィンドウに張り付けられないようなので,2Dを描画した後にメニューを描画するとよいみたい. // 各ウィンドウの描画image(pg2D,

          【Processing】画面分割(2D, 3D, 3D)+メニュー表示

          【Processing】プルダウンメニューを日本語で使いたい

          【状況】プルダウンメニューを使い,さらに日本語で出すのに一番楽な方法は何か模索.探したコードそのままでもうまく動かず.(Processing 4.3) 【対処】ControlP5を使うのが一番楽みたい.ちょこちょこ設定を修正したら動いた,のメモ. ControlP5を導入「スケッチ」→「ライブラリをインポート」→「Manege Libraries」 Filterに,「controlp5」を入れると出てくるので,「Install」する. インポートして使えるように(「スケッチ

          【Processing】プルダウンメニューを日本語で使いたい

          【Processing】画面内を3Dと2Dのエリアに分割して使いたい

          【状況】3D表示をしつつ,文字情報は右半分の2Dで表示したい.3D空間に文字を置いてもいいけど,文字に3Dの設定が及ばないようにするとか面倒なので,完全に独立させたかった(なんだか使ったことがないProcessingをやることになってしまった).(Processing 4.3) 【対処】createGraphicsで3D, 2D用の画面を個別に作って親画面内に配置するのが一番簡単みたい,のメモ. もちろん,3Dと3D, 2Dと2Dも可です. 各表示画面を作って配置マルチウィ

          【Processing】画面内を3Dと2Dのエリアに分割して使いたい

          【Python】Webカメラで使える解像度・fpsの一覧取得が遅すぎて絶望(→C#で作ったら1秒未満)

          【状況】OpenCVで解像度とフレームレートを設定して記録するときに,うっかりそのカメラの仕様にないパラメータ(解像度,fps)を使っている場合,OpenCVが別の有効な数値に置き換えて動作しようとするみたい(それで以前ハマった).そこで,使えるカメラパラメータを事前に調べたいと思いました. 【対処】OpenCVでは,当該カメラで使える解像度,fpsを列挙する機能がないので,設定(set)→取得(get)して調べる方法しかないみたい.網羅的に使えるパラメータを調べようとするも

          【Python】Webカメラで使える解像度・fpsの一覧取得が遅すぎて絶望(→C#で作ったら1秒未満)

          【Python】imageioを使ってWebカメラ映像をmp4リアルタイムエンコードしたらハマった

          【状況】Webカメラの映像をリアルタイムエンコードして保存するだけだから簡単かと思ったら,機材によって挙動が変わるようなので試行錯誤.また,1920x1080にしたいのに,1920x1088に自動的にされてしまう. 【対処】カメラの仕様によりOpenCVで指定したフレームレートに実際になっていなかったので,実際のfpsを取得して動画を設定.また,1920x1080にするため,ffmpegのマクロブロックサイズを1に変更した(非推奨ではありますが). Webカメラのfps設定

          【Python】imageioを使ってWebカメラ映像をmp4リアルタイムエンコードしたらハマった

          【Python】現在時刻をmsで取得したい.ただし,当日の0時0分0秒を0msとする

          【状況】時刻をmsで扱いたいが,当日の0時からの経過時間にしたい,という(たぶん)ニッチな仕様. 【対処】いろいろ方法はあるけど,現在時刻から今日の0時を引く計算がシンプルに見えたのでメモ. import datetime# 現在の時刻を取得now = datetime.datetime.now()# 現在時刻を午前0時0分0秒に差し替えて,経過ミリ秒を計算する(microsecondがあるので1000倍してmsに)millisecond_from_midnight = i

          【Python】現在時刻をmsで取得したい.ただし,当日の0時0分0秒を0msとする

          【C#&Python】C#からファイル名を引数として与えてPythonを呼び出すときの不具合対応

          【状況】C#からPythonを外部プロセス起動で呼び出し,フルパス表記したファイル名を引数にして渡して動作させたい.しかし,意図通りに引数が渡らなかった. 【対処】ファイル名に空白が入っていると,引数が分割されしまうことが原因であることが分かったので,引数の渡し方を修正.なお,引数を渡して外部プログラムの呼出しをするとき,仕組み上,他の言語の組み合わせでも同じ不具合が起きるはず. 不具合が発生したコード変数に格納されたスクリプト名(pythonScriptPath)とファイ

          【C#&Python】C#からファイル名を引数として与えてPythonを呼び出すときの不具合対応