Bye Bye Moore

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

python

OpenCVでアナログメーターの角度を読み取る その3:左右対称なメーター

角度を計算するわけですが、左右対称な場合はその方向を判定しないと使いモンになりません。 アプローチは色々ありそうですが、今回は考える事が少ない前半後半の分離というアプローチでやる事にしました。 実際のところ 方針 処理する領域を分けて、 #前半…

OpenCVでアナログメーターの角度を読み取る その2:角度を検知し線を描画

実際のところ import cv2 import numpy as np img = cv2.imread('gauge.jpg') #img = cv2.imread('test3.png') gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) edges = cv2.Canny(gray,150,200,apertureSize = 3) lines = cv2.HoughLines(edges,1, 1* np.pi/1…

OpenCVでアナログメーターの角度を読み取る その1:エッジの検出

ハフ変換という方法で方向を検知できる その前処理として、エッジの検出が必要 実際のところ canny法という手法をつかってエッジの検出をします。 OpenCVではそのまんまCannyというメソッド名で、画像、下限、上限と引数が続きます。 import cv2 import nump…

OpenCVで物体の角度検知を行う

オブジェクトの傾きからパラメーターをとる必要がでてきました。 できればnoOpenCVチャレンジを継続したかったのですが、時間的にそうも言っていられず…… 久々にOpenCVを弄る事に。 実際のところ 考え方 画像を二値化する オブジェクトの領域を区切る オブジ…

【読書メモ】BlenderユーザーのためのPython入門 

BlenderユーザーのためのPython入門作者:大西 武シーアンドアール研究所Amazon

open3d その3:画像から点群データっぽいものを作り三次元モデルを生成

$ for i in $(seq 10 10 90) ; do convert rose: -threshold $i% rose$i.png; doneimport open3d import numpy from PIL import Image # 点群型データ作成 pcd = open3d.geometry.PointCloud() files = ['rose10.png','rose20.png','rose30.png','rose40.png…

open3d その2:VoxelGridで埋める

実際のところ スクリプト例 VoxelGridのcreate_from_point_cloud import open3d import numpy # 点群型データ作成 pcd = open3d.geometry.PointCloud() # 座標設定 for x in range(10): pcd.points.append([ 0, float(x), 1.0]) pcd.points.append([float(x)…

open3dで点群データをつくる その1:導入

numpy-stlでSTLファイルを生成する その1:環境構築と動作確認 - Bye Bye MooreSTLファイルを生成しようと思ったものの、やはり難しい……点群データめいた方法でやれないか調査したところ、 open3dというドンピシャなモノが。 実際のところ 導入 $ pip insta…

C#(.NET 5)からPython3の引数つきスクリプトを呼び出す

最近流行りのプロジェクトはnodeやpythonのリファ実装が充実していたりします ところが、それと連携したいプロジェクトはC#で書かれており、できれば更新はしたくない…… そういうときは、いっそC#のほうからpythonを読み出すというのも考えていいかも 実際の…

Python3で複数種類のエラーをキャッチする

実際のところ メインで発生し得るのがファイルなしエラー、一応それ以外もキャッチしときたい場合 try: f = open('myfile.txt', 'r') 100 / 0 except FileNotFoundError as e: print("123 ", e) except Exception as e: print("foobar: ", e) $ python3 hoge…

PythonでTCP/IPなsocket通信

昔ながらのsocket通信に出くわしたので試しにPythonで組んでみました。 実際のところ 送信側 import socket import time with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.connect(('127.0.0.1',9999)) s.sendall(b"hello") time.sleep(2) w…

pythonの正規表現まわり

しょっちゅう忘れて全く記憶に残らないのでメモ 実際のところ X=300だとかy=99みたいな感じで文字列が入ってくる際、左辺と右辺をそれぞれパースしたい場合は以下のように import re pt = re.compile(r'(x|y)=(\d{1,5})') mt = pt.match("x=100") mt[1] #>> …

numpy-stlでSTLファイルを生成する その2:自分で平面ポリゴンをかく

実際のところ import numpy as np from stl import mesh ## 基準となる頂点を設定 vertices = np.array([\ [-2, -1, +1], [-1, -1, +1], [ 0, -1, +1], [+1, -1, +1], [+2, -1, +1], [ 0, 0, +1]]) ## 頂点を三点指定して三角形をつくる faces = np.array([\…

numpy-stlでSTLファイルを生成する その1:環境構築と動作確認

実際のところ インストール $ pip install numpy-stl スクリプト import numpy as np from stl import mesh # Define the 8 vertices of the cube vertices = np.array([\ [-1, -1, -1], [+1, -1, -1], [+1, +1, -1], [-1, +1, -1], [-1, -1, +1], [+1, -1, …

GoogleDriveAPIで 403で怒られたらトークンの権限設定が古いのかも

developers.google.com を参考にOAuthのcredをtoken.jsonに保存して開発しているようなケースで 色々弄りながら実験していると、以下のようなのが出てくる事があります。 An error occurred: これはtoken.jsonに古いScope情報など不適切な権限が書き込まれて…

Pyhon3系でGoogle Driveと接続する その3:ファイルのダウンロード

実際のところ ファイルIDがXXXのものをBytesIOに放り込み、ファイルfoobar.fileに書き込むサンプルは以下のような感じに from __future__ import print_function import os.path import io from google.auth.transport.requests import Request from google.…

Pyhon3系でGoogle Driveと接続する その2:ファイルのアップロード

shuzo-kino.hateblo.jp の続きでファイルをアップロードする部分をやっていく予定の枠 実際のところ 前回のquickstart.pyをベースに developers.google.comScopeは公式サイトから'https://www.googleapis.com/auth/drive'に設定 OAuth 2.0 Scopes for Google…

Pyhon3系でGoogle Driveと接続する その1:環境導入

RasPiを経由してクラウド上のファイルをみたり、あるいは逆にアップロードしたりする仕組みが必要になりました 自前で組む、AWS S3を使うなど色々検討はしましたが……外部の人が適宜参照する可能性がでてきたため、 今回は説明しやすいGoogle Driveをつかうこ…

RasPi4b + Webcam + ArUcoでARマーカー追従のロボット その2:Python2系で位置情報の取得

shuzo-kino.hateblo.jpの続き。 python3で傾きや位置の情報をとってみます。 実際のところ OpenCVでも当然カメラは使えるのですが……色々とトラウマがあるx*1のでローカルファイルを読み出す方向で実装しました。 #! /bin/python import cv2 aruco = cv2.aruc…

chromium+selenium+RasPiで動いていたパーサーをAWS LightSailに載せ替える

shuzo-kino.hateblo.jp のシリーズの実質的続編。これまではseleniumで動くパーサーをRasPi4Bに載せて運用していました。 RasPi4BはARMコアなので少し環境づくりが面倒だったこと、それ以上にずっと繋いでないと動かない仕様もどうかと思い、載せ替えを検討…

xArmにROS環境をつくる その3:rospy経由でpythonから動かす

PythonでROSメッセージをおくる方法として、rospyの活用があります 実際のところ まず使うためのサービス名を把握 $ rosservice list /rosout/get_loggers /rosout/set_logger_level ・・・ /xarm/vacuum_gripper_set /xarm/velo_move_joint /xarm/velo_move…

【読書メモ】プログラミングROS ―Pythonによるロボットアプリケーション開発 (オライリー・ジャパン)

プログラミングROS ―Pythonによるロボットアプリケーション開発 (オライリー・ジャパン)作者:Morgan Quigley,Brian Gerkey,William D. SmartオライリージャパンAmazonとある案件でお客先が読んでいたので、参照ついでに手に取ってみました。 rospyを使ってRO…

シェルコマンドを実行するsubprocessで結果を格納するアレコレ

shuzo-kino.hateblo.jp の一年半越しの続き。subprocessでシェルコマンドを実行するのはいいけど、その結果を格納する方法について 実際のところ import subprocess res = subprocess.run(["pwd"]) #>> /home/shuzo res #>> CompletedProcess(args=['pwd'], …

OpenPIVをWSL2上をためす その4:動画もイケる

PIVの元データを作る場合、その形式はハイスピードカメラから吐き出される動画である可能性が高いです。 それの切り出しは手動で切り出しなのかなと思ってましたが……ちゃんと動画のままやる方法が公式チュートリアルにありました。 実際のところ 元データを…

OpenPIVをWSL2上をためす その3:matplotlibで表示を工夫する

OpenPIVのデフォでは、ベクトル矢印で表示されますが、これをMatplotlibをつかって別の表現方法で試してみます。 実際のところ まずmatplotlibとは何者か 公式から説明を引用すると…… Matplotlib is a comprehensive library for creating static, animated,…

ngrokで自社ネット運用のRaspiを外に開放したりwebhookを受け取ったりする

Raspiでローカル用Web鯖立てれば、スマホをタッチディスプレイ代わりに出来たり、同一ネット内の装置と通信できたりで便利です。 ……が、どうして人間、欲がでるもの。 外のシステムとの通信……例えばwebhookの受け口が欲しかったり、一々ネットワーク再接続が…

OpenPLCを使ってみる その3:pythonと連携する

RasPiでラダーを動かす旨みの一つに内部スクリプトと連携しやすいってのがあると思います。 たとえば、判定ロジックとかネット連携のをPythonで書いたやつとか。 今回はそんな話。 実際のところ 先日のラダーリストの中に「Python POUs」というのがあり、 そ…

Python3でファイルを削除したい場合removeかunlink

Python3でファイルを削除したい場合、標準のOSモジュールにあるremoveメソッドかunlinkメソッドをつかいます。 後者はいままで全く知らず、ファイルポインタの解放くらいの意味で読み飛ばしてたので少し積みました(隙自語) 実際のところ "/your/file/path"…

Ubuntu 20.10 on Raspberry Pi 4B にSeleniumの環境を構築してスクレイピング その4:healessでもクリックしてダウンロードする

shuzo-kino.hateblo.jp の続き。前はブラウザ表示してからやるパターンですが、今回はヘッドレスモードの時。 実際のところ #!/usr/bin/env python3 # -*- coding: utf-8 -*- import time from selenium import webdriver from selenium.webdriver.chrome.op…

selenium + pythonな状態でスクショをとる

動作状態を確認したり、なにがしか通知に活かすためスクショが欲しい事ありますよね。 幸い、seleniumにはスクショ機能が備わっています。 実際のところ SSH接続のリモートデバイスから、特定のサイトにログインしてスクショを撮るだけのサンプルは以下の通…