Python独習!

習得したPython知識をペイフォワード

Python

PythonでBASLERカメラのエミュレーターを設定する

Source of photo: https://github.com/basler/pypylon As of Sep 22, 2021 概要 システム環境変数に"PYLON_CAMEMU=1"と設定してあげると、カメラエミュレーションが有効になり、実際にカメラがPCに接続されていなくてもpypylonで作ったスクリプトを動かくす…

PythonでUSBカメラのスナップショットを大量に取得する!

USBカメラから自動で大量に画像を取得するプログラムを作った。 用途 機械学習用に大量に画像データを取得するときなど。 プログラムの概要 実行すると、フォルダダイアログが立ち上がるので保存先を指定する。保存先に自動的に新規フォルダが作成される。名…

Pythonでスクリプト実行中に対話モードに入りたい

スクリプトを実行しているときに、ある特定のところで止めて対話モード(Python Shell)に入るにはどうすればよい? code.InteractiveConsoleを使うと良い。 概要 スクリプトはひとたび実行すると終わるまで手出しできない。手出しというのは、変数の値を見…

PythonでWebカメラの映像から円(硬貨)をリアルタイム検出する!

画像から円形の物体を検出したい opencvのHoughCirclesを使うと良い。ただし、公式ドキュメントが「半径が安定しない」と注意事項を挙げている。半径の測定には向かない。 解説 HoughCirclesについては色んなサイトで解説されている。 特徴検出 — opencv 2.2…

VS Codeの Module 'cv2' has no 'imshow' member の解消

Pythonの開発環境として Visual Studio Code を使っていると、opencvに関する警告が出る。 無視しても問題ないが煩わしいので解消したい。その方法を忘備録として残しておく。 環境 Python 3.8.1 opencv-python 4.1.2.30 Pylint 2.6.0 Visual Studio Code 1.…

Pythonで48bitカラー画像を読み込んでRGBの単色16bit画像に分解する

Pythonで48bitカラー画像を諧調を維持したまま取り扱うにはどうしたらよいか? imageioモジュールを使う。PillowとOpencvは対応していないらしい。 ※画像フォーマットはTiffです。PNGでもできると説明している記事がありましたが、今回は試していません。 py…

Python IDLE を Raspbian 10 (Buster) にインストールする

手元にあったラズパイ(Raspberry Pi 2 Model B)のPythonを3.5.3 ⇒ 3.8.1にバージョンアップしたのですが、IDLEやThonnyに紐づいているバージョンが3.5.3のまま変わらず。しかし、Linuxはど素人のため自身で打開策を考えることができず…ネットでそれっぽい情…

Pythonで設定ファイル(.xml)の読み込みと書き換えをする

ソフトウェアの設定(好みの画面設定、出力ファイルの保存場所とか)を保存するには、ini、xml、jsonどれがいいの? ソフトウェアの目的に合わせて選択するしかない。ネットに沢山の情報が転がっているが、それらは異なる背景を持つプログラマーたちの意見で…

PythonでBASLERのカメラを制御する ~インストールの忘備録~

2021/09/22 更新 Source of photo:https://github.com/basler/pypylonマシンビジョン業界で有名なBASLER社。産業用カメラの豊富なラインナップを展開していて、仕事で何かとお世話になることが多い。そんなBASLERカメラをPythonで制御するための環境を構築し…

Pythonでsecretsモジュールを使ってパスワードを自動生成する

Pythonでパスワード作るにはsecrets.choice()を使った方が良いと言われているけど、random.choice()と何が違うのか? random.choice()で作成されたパスワードは予測される可能性がある。パスワードを構成するすべての文字がランダムに選ばれたように見えて実…

Pythonでグラフのプロットとプロットの間の値を読み取る

実験で〇〇を測定したけど測定間隔が粗かった。データとデータの間にある値が欲しんだけど… interpolateのスプライン補間でデータ数を増やす。※あくまでもデータの“補間”ですのでその意味をちゃんと理解してご使用ください。 解説 スプライン補間の詳細はグ…

Pythonで自動化!Outlookメールを自動送信する

STMPサーバー?よく分からない…それを使わずにメールを自動送信する方法あるか? win32comモジュールを使ってOutlookを操作する 解説 Pythonでメール操作する方法をググるとstmplibを使用する方法が多く出てくる。この方法はSTMPサーバーやパスワードを指定…

Pythonで自動化!複数画像から輝度値を取得してテキストに出力する

画像から輝度値を抽出したいが、大量にあるので自動化したい。 filedialog.askopenfilenamesを使ってファイルダイアログで複数画像を一括で選択できるようにする。 解説 filedialog.askopenfilenamesの使い方 filetypesで開くファイルの種類を指定、initiald…

Pythonのlist.sort()とsorted(list)の違いは新たにリストが作られるかどうか

list.sort()とsorted(list)の使い分けは? 対象となるリストを作り替えてもいい場合は list.sort() を、対象となるリストを残しておきたい場合は sorted(list) を使う 解説 list.sort() sortメソッドは対象リストに直接変更を加えるソートを行う。これを「イ…

Pythonでシリアル通信!Arduinoに文字列を送って、Arduinoから文字列を受け取る!

2021/01/24 送受信の所要時間に関する記述を追加 シリアル通信でLチカしたプログラムをアップデート。Arduinoに特定の文字列を送ると、それに対応した返答を返すというもの。 RS232Cを備える測定器をリモートコントロールするための練習プログラム。greenhor…

Pythonでシリアル通信してArduinoをLチカさせる

とある測定器をRS232Cでリモートコントロールしたくて、Pythonのシリアル通信の仕方を学ぶ。まずは簡単なところからということで、Pythonから送られてきた数字(トリガー)をArduino側で識別してそれぞれに対してLチカの挙動を変える、というプログラムを作…

Pythonでフリー公開されているDLLを使ってみる

ctypesを使ってDLLの呼び出し方を学ぶ。今回はフリーで公開されているDLLを使ってみる。前回よりも難しかった。 greenhornprofessional.hatenablog.com 使用させてもらったDLLは以下。文字列として書かれた式と変数の値を与えると式通りに計算してくる、とい…

Pythonでダミーファイルを大量生産する

ソフトウェアの動作確認のために大量の画像ファイルが必要になった。中身はどうでもよく、とにかく数が必要。 1つの元画像をコピーして連番をつける、というプログラムをちゃちゃっと作った。 プログラム # 32_CopyAndRename_001.py # python 3.8.1 # coding…

Pythonでdllを使う Windows API - MessageBox

マシンビジョンカメラをコントロールするソフトが作りたい。でもPython向けのAPIが公開されていない。調べてみたらctypesでdllを使うことができるらしい。 とりあえず、WindowsのMessage Boxの呼び出し方を紹介してくれているサイトがあったので、参考にさせ…

Pythonでpipが対応しているWheelファイルを調べる

2021/01/13 更新ネットワークにつながっていないパソコンにモジュールを追加したい場合、そのモジュールのWheelファイル(.whl)を使うとことでインストールすることができる。Wheelファイルを適当なディレクトリに置いて、pipで指定してあげればよい。ただし…

Pythonでグラフ画像から数値を読み取ってエクセルに出力する

シーンとしては、例えば、製品Aと製品Bの性能を比較するときに特性図(グラフ)を参照することがある。カタログやWebにグラフは掲載されているが、画像になっているので重ね合わせて比較することができず、なんとなくAの方が優れてるかな?なんてあいまいな…

Pythonで円と四角を描画する

顕微鏡の視野とTVアダプタレンズの関係を描画するプログラムを作った。 結果 プログラム # 27_FNwithTVlens_001.py # python 3.8.1 # coding: utf-8 import matplotlib.pyplot as plt import matplotlib.patches as patches import numpy as np #===========…

Pythonでsorted関数で第2キー(Key)をセットする方法

リスト要素の並び替えでsorted()をよく使うが、並び替えの条件(キー)が1個だけなのは不便だなと思っていた。 しかし、他人さまのコードで並び替え条件を2個使っているものがあった。 使い方を理解したいので、メモ書き程度に残しておく。 解説しているサ…

Pythonで二重ループ(for文の入れ子)の内包表記

他人のコードを見ていると2重ループが内包表記で記述されていることがある。 リストの要素を頻度順に並び変えるプログラムを考えていて、また見かけたのでこれを機に使い方を勉強した。題材となるプログラムは、入力に対して以下のように出力がほしい。 入…

Pythonで重複しない要素をリストから削除する

測定値から異常値や低頻度の値を除去する際に使える(かも)。 例えば、以下のようにリスト内で重複していない要素(100と1)を削除したいケース。 入力:[100, 2, 2, 3, 3, 3, 2, 1, 2, 4, 4, 3] 出力:[2, 2, 3, 3, 3, 2, 2, 4, 4, 3] プログラムはこんな感…

Pythonとopencv4で特徴量パターンマッチングしてから対象部分を抽出する

前回のプログラム、AKAZE検出器を使った特徴量パターンマッチングの改良版。 greenhornprofessional.hatenablog.com 比べる2つの画像の角度、大きさが違っても大丈夫。ちゃんと該当する部分を抽出する、というもの。ただし、画像の画素数が少ないと検出率が…

Pythonで処理前後の画像を並べてGUIに表示して、パラメータによる画像変化がダイナミックにわかる

画像処理のパラメータを決めるとき、パラメータ変化がすぐに画像に反映されると、だいぶやりやすくなる。 ガウシアンフィルターをかけたときの変化が見えるようにツールを作った。画像処理はopencv、GUIはTkinterを使用した。 結果 左が元画像、右がガウシア…

Pythonでリストの先頭だけを代入する(疑問あり)

リストの先頭の要素だけを変数に代入する方法として次の方法がある。 Pythonでタプルやリストをアンパック(複数の変数に展開して代入) | note.nkmk.me #python 3.8.2 _list = [0, 1, 2, 3] print(_list) print(type(_list)) a, *b = _list #先頭要素を a …

Pythonで状態に合わせてボタンの見た目を変える(Tkinter) - Threading 追加 -

前回のGUIにStopボタンを実装した。 カウントアップする関数を別Threadにして、Stopボタンを押すことで停止のフラグを立てる、というもの。 ※Print文で要所要所のThreadリストを出しているが、Threadがいつ死んでいるのかが結局わからなかった。 ※あと、Thre…

Pythonで状態に合わせてボタンの見た目を変える(Tkinter)

PythonにもGUIフレームワークがあるということで基本的なところを勉強した。こだわり始めるとキリがなく、Pythonの習得から外れていくので気を付けたい。 結果 チェックボックスでスタートボタンのアクティブ ⇔ グレーアウトをコントロール。処理中はスター…

/* -----codeの行番号----- */