Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

python

OpenCVでアナログメーターの角度を読み取る その4:極座標系で解析する

shuzo-kino.hateblo.jp およそ一年ぶりにこのテーマに 実際のところ import cv2 import numpy as np img = cv2.imread('gauge.jpg') # 変換フラグ:キュービック補間 + 外れ値塗りつぶし + 極座標へリニアマッピング flags = cv2.INTER_CUBIC + cv2.WARP_FIL…

Python + OpenCVのimshowでフルスクリーン表示

reTerminal - 工業用IOT端末ハードウェア Linuxインストール済みRaspberry Pi CM4搭載 5インチ マルチタッチスクリーンPhysical Computing LabAmazonreTerminal(RasPi CM4とディスプレイを組み合わせたモジュール)にOpenCVの結果を表示したものの半端に小さ…

Pygameのジョイスティックはイベントを待つ必要はない

サンプルコードをよく見れば気付いているべきだったのですが…… JoystickにもJOYAXISMOTION等のイベントが割付られているもの、同じ角度にしたままだとイベントとして登録されないことがあります。 動作範囲制限をつけようと試行錯誤していたところ……そもそも…

BrokenPipeErrorがでたらSIGPIPEを付けるとなんとかなるかも

標準出力に処理結果を出す系のPythonスクリプトを書き、netcatで飛ばそうとしたところ BrokenPipeError: [Errno 32] なるエラーが。 要するにパイプの受け渡しに失敗しているのは分かるのですが、じゃあどうすれば……? 答えはPython標準ライブラリのsignalに…

jsonライブラリのloadメソッドはdict型を返すパターンもある

実際のところ ベタ書きのjsonファイルを読み出したところ、パースエラーに。 曰く、要素を囲う字を「'」を「"」にしろというのだが、元ファイルはそうなっている。ファイルから読むと、json objectはdict型にされるらしい……。 参考もと json — JSON encoder …

dataclasses-jsonでdataclassesにJSONからデータを渡す

大分前に扱ったデータの塊をヨロシク定義できるdataclasses shuzo-kino.hateblo.jp これにjsonからデータを突っ込んだり、逆にjsonにしたりするライブラリがありました。 実際のところ dataclassesに加えて、dataclasses_jsonも追加 from dataclasses import…

【自分用メモ】Bottleの検証環境用テンプレート

なんやかんや、使い捨てのBottle鯖をたてるケースが多いので Windowsでも動く 実際のところ python from bottle import route, run, template, static_file, redirect from bottle import TEMPLATE_PATH from time import strftime from os import path as o…

RealSense SDK for Pythonを Ubuntu22LTS on Raspi4B で試す その6:一定距離以内の物体表示

import pyrealsense2 as rs import numpy as np import cv2 conf = rs.config() width = 640 height = 480 pipe = rs.pipeline() profile = pipe.start(conf) # 普通の描画 conf.enable_stream(rs.stream.depth, width, height, rs.format.z16, 30) conf.ena…

RealSense SDK for Pythonを Ubuntu22LTS on Raspi4B で試す その5:差分画像フィルタをつくる

実際のところ import pyrealsense2 as rs import numpy as np import cv2 conf = rs.config() width = 1280 height = 720 # 普通の描画 conf.enable_stream(rs.stream.infrared, 2, width, height, rs.format.y8, 30) pipe = rs.pipeline() profile = pipe.s…

RealSense SDK for Pythonを Ubuntu22LTS on Raspi4B で試す その4:深度画像に枠を作ったり文字を入れたり

shuzo-kino.hateblo.jpOpenCVの方に寄った話になりますが……せっかく深度情報を取れたので情報を書き出してみました。 実際のところ import pyrealsense2 as rs import numpy as np import cv2 conf = rs.config() width = 1280 height = 720 rect_l_w = int(…

RealSense SDK for Pythonを Ubuntu22LTS on Raspi4B で試す その3:特定以上の高さ情報をおくる

実際のところ import pyrealsense2 as rs import numpy as np conf = rs.config() # 高さ情報を取得 conf.enable_stream(rs.stream.depth, 1280, 720, rs.format.z16, 30) pipe = rs.pipeline() profile = pipe.start(conf) x = 100 y = 100 while True: fra…

RealSense SDK for Pythonを Ubuntu22LTS on Raspi4B で試す その2:深度情報を色分けして表示

shuzo-kino.hateblo.jp の続き。 深度情報を色分けして表示する方法について。 実際のところ 単独駆動 import pyrealsense2 as rs import numpy as np import cv2 conf = rs.config() # 高さ情報を取得 conf.enable_stream(rs.stream.depth, 1280, 720, rs.f…

RealSense SDK for Pythonを Ubuntu22LTS on Raspi4B で試す その1:環境構築

実際のところ 条件 Ubuntu 22LTS Raspberry Pi 4B Intel Realsense SDK Intel D435 環境構築 まずは例のごとくパッケージを最新に $ sudo apt-get update && sudo apt-get upgrade リポジトリからビルド pipの方法が紹介されていたものの、Ubuntu22LTSだとど…

JSON文字列の中にKeyが存在しないか確認する Python3

実際のところ import json jsonstr = '{"x":100, "y":200 }' data = json.loads( jsonstr ) print(data) # >>> {'x': 100, 'y': 200} "x" in data # >>> True "u" in data # >>> False 参考もと Python Check if key exists in JSON and iterate the JSON ar…

"node-red-contrib-spreadsheet-in"でNode Redで表計算系データを扱う その1:導入とデータ読み

実際のところ 導入 例のごとく「ユーザー設定」=>「パレット」=>「ノードの追加」で。 ”spreadsheet-in”とやれば出てきます。 使い方 公式にサンプルがあるので、これで動きを見てみる node-red-contrib-spreadsheet-in/Read spreadsheet file.json at m…

Dynamixel SDKを使ってPythonでXL330を弄る その2:標準入力から受けて実行

実際のところ #!/usr/bin/env python # -*- coding: utf-8 -*- from dynamixel_sdk import * # Uses Dynamixel SDK library import msvcrt # for getch import time import sys #********* DYNAMIXEL Model definition ********* MY_DXL = 'X_SERIES' # X330…

Dynamixel SDKを使ってPythonでXL330を弄る その1:環境構築と

実際のところ 導入 pip install dynamixel_sdk スクリプト COM5からデフォのXL330で右左に動かすには #!/usr/bin/env python # -*- coding: utf-8 -*- from dynamixel_sdk import * # Uses Dynamixel SDK library import msvcrt # for getch import time def…

open3Dで点群データをメッシュ化する

実際のところ import open3d as o3d import numpy as np dataset = o3d.data.LivingRoomPointClouds() pcds = [] pcds.append(o3d.io.read_point_cloud('/root/open3d_data/extract/LivingRoomPointClouds/cloud_bin_1.ply')) ptCloud = pcds[0] ##近傍の点…

点数を減らして処理を軽くする

実際のところ import open3d as o3d pcds = [] pcds.append(o3d.io.read_point_cloud('/root/open3d_data/extract/LivingRoomPointClouds/cloud_bin_1.ply')) downpcd = pcds[0].voxel_down_sample(voxel_size=0.05) o3d.visualization.draw_plotly( [downpc…

Google ColabとOpen3D

https://shuzo-kino.hateblo.jp/entry/2018/07/06/232654 でやったツールがOpen3dと使えるようになったのでメモ 実際のところ ! pip install open3d import open3d as o3d dataset = o3d.data.LivingRoomPointClouds() pcds = [] pcds.append(o3d.io.read_po…

pygcodeでgcodeを生成 その2:接続先機体の情報の予想値をだす

実際のところ 仮想マシンの予定位置 from pygcode import Machine from pygcode import GCodeRapidMove, GCodeStartSpindleCW,GCodeFeedRate,GCodeLinearMove,GCodeStopSpindle gcodes = [ GCodeRapidMove(Z=5), GCodeStartSpindleCW(), GCodeRapidMove(X=10…

pygcodeでgcodeを生成 その1:環境構築

実際のところ 導入 $ pip3 install pygcode スクリプト from pygcode import * gcodes = [ GCodeRapidMove(Z=5), GCodeStartSpindleCW(), GCodeRapidMove(X=10, Y=20), GCodeFeedRate(200), GCodeLinearMove(Z=-1.5), GCodeRapidMove(Z=5), GCodeStopSpindle…

numpngwで画像を色々生成してみる

shuzo-kino.hateblo.jp で使った画像生成ライブラリnumpngwを色々と試してみる 実際のところ 今書いてまs 参考もと GitHub - WarrenWeckesser/numpngw: Functions that create PNG and animated PNG files from numpy arrays.

Pybullet上のxarmをcolaboratry上で動かしてみる

Pythonでリアルタイム衝突シミュレーションをやるライブラリPyBullet - Bye Bye Moore の続き表示するだけでは旨みが少ないので、xarmを動かしてみます 実際のところ 前回と同様、xArmのURDFを導入 %%time !pip install pybullet import pybullet as p impor…

Pythonでリアルタイム衝突シミュレーションをやるライブラリPyBullet

物理シミュレーションはROSなしでは苦しいと思ってましたが……あるとこにはあるんですねぇ。 実際のところ 今回目的としているxArmのURDFモデルはライブラリにデフォでついてきます。 GitHub - bulletphysics/bullet3: Bullet Physics SDK: real-time coll…

Raspberry Pi (というかOpenGL ESを使うARM系Linuxボード)はOpen3Dで表示は考えない方が良い

Raspberry PiはOpenGL ESを使っているので、元祖OpenGLを使うOpen3Dの描画系は使用を考えない方が良いという話。 実際のところ $ cat result.txt | python3 myOpen3DMake.py [Open3D WARNING] GLFW Error: GLX: Failed to create context: GLXBadFBConfig [O…

shlexでsubprocessに渡すシェル文生成で楽をする

実際のところ import shlex shlex.split("mount -o remount, rw /") # ['mount', '-o', 'remount,', 'rw', '/'] スペースを空けまくるという陰湿な嫌がらせにも対応 >>> shlex.split("mount -o remount, rw / ") # ['mount', '-o', 'remount,', 'rw', '/'] …

sys.stdin.bufferがバイナリファイルを扱える

shuzo-kino.hateblo.jp で stdin = sys.stdin.buffer.read()という感じで標準入力からバイナリデータを扱いました。最初は以下の様にそのまんまstdinからreadしていたのですが、これだと素では文字列型になってしまいます stdin = sys.stdin.read()公式ドキ…

標準入力から画像ファイルを読んでcv2に渡す

これまでのARコードサンプルでは過去のヤラカシ由来の私怨からファイルに書き出してから読んでいました。 これだと、書き出し分の処理時間がありますし、 実際のところ import cv2 import numpy as np import sys aruco = cv2.aruco dictionary = aruco.getP…

【読書メモ】前処理大全  データ分析のためのSQL/R/Python実践テクニック

前処理大全[データ分析のためのSQL/R/Python実践テクニック]作者:本橋 智光技術評論社Amazon何事も段取りが大切といわれますが、それは所謂機械学習でも変わりません。 本書「前処理大全」は機械学習やデータ成形の段取り第一段階である、データの前い処理…