Python3関連のことを調べてみた2022年11月15日

Python3関連のことを調べてみた2022年11月15日

【文字検出_備忘録】OpenCV X Python 画像の読み込みとグレースケール化

産休にはいって、出産まであと1ヶ月切ったので、子供を産まれるまで、どこまでできるかチャレンジ。
私のスペック
・情報工学、学部卒(なのでたかが知れてる)
・とあるメーカー 設計・開発業務 5年目、主にマネジメントしかしてない
・子供1人、2歳(まだ夜泣きもするし、寝るのもへたっぴなので夜はほぼ活動してない)

いや、多分こんな文字検出なんかね、どこでも載ってるんだけど、色々やってみたいので、お勉強兼ねて少し、鈍臭くやった備忘録を書きます。
鈍臭くっていうのは、データの中身をちゃんとみたり、どうしたらAPIやライブラリを使用せずに組んでみたりするってこと。です。

# 前提条件

## 開発環境
OS macOS Monterey
ハード iMac (21.5-inch, Late 2015)
Memory 8GB

## 今までやってきたこと
・開発環境整備
 Python, OpenCVI(Numpy含む), Matlabplotlib
・エディタ SublimeText

## やりたいこと
・画像から文字検出

## 考えてるステップ
Step0 画像の読み込み
Step1

元記事を表示

ライブラリー無し自作関数 Python3 西暦 ➡ 和暦変換 関数

# 西暦 ➡ 和暦 変換 Function

“`python:main.py

import datetime

class Gengou():

def __init__(self):
pass

def Data_Set(self):
date_arr = [
{‘year’: 2019, ‘name’: ‘令和’, ‘new_Japanese_calendar’: ‘平成31年’},
{‘year’: 1986, ‘name’: ‘平成’, ‘new_Japanese_calendar’: ‘平成元年’},
{‘year’: 1926, ‘name’: ‘昭和’, ‘new_Japanese_calendar’: ‘大正15年’}
]
return date_arr

def Gengou_Print(self, now_y, r_month, date_arr):
for d_val in date

元記事を表示

天気予報APIで翌朝の降水確率を取得してLineで通知する

# 動機と目的
私は朝、会社に行くのが苦痛である。
理由は、早起きが苦手だからである。
そして通勤時の天候で(傘を持っていく/持っていかない)、(早く起きる/起きない)を決めなければならない。
例えば
(a)雨が降っているならば、傘を持って5:00に家を出て徒歩で駅に向かう。
(b)そうでないならば、傘を持たずに5:30に家を出て自転車で駅に向かう。

なので、前日20:00の天気予報で翌日の朝の天気が雨か確認し30分早く起きるかどうかを決定する。
これを自動化すること目的とする。

## 詳細
処理の流れは以下の通り。
(1) 天気予報APIで翌日の朝6-12の降水確率を取得する。
[天気予報API](https://weather.tsukumijima.net/ “天気予報API”)
(2) もし降水確率が40%以上なら、Line notifyで自分に通知する。
[PythonでLINE Notifyへ通知を送る](https://qiita.com/akeome/items/e1e0fecf2e754436afc8 “https://qiita.com/akeome/items

元記事を表示

【Python3】Decimal.quantizeを用いて小数点第○位以下を四捨五入

# 何の記事?

Python3で小数点以下を丸める関数にroundがありますが、
浮動小数点演算の問題により四捨五入が正確に行われない
場合があります。

“`python
f = 2.675

print(round(f, 2))
“`

実行結果:

“`python
2.67
“`

本当は2.68にならなければなりませんが切り捨てされてしまっています。この事象に対する対策です。

# Decimalを用いる方法

Decimalを用います。

“`python
from decimal import Decimal, ROUND_HALF_UP

def my_round(x, d=2):
p = Decimal(str(x)).quantize(Decimal(str(1/10**d)), rounding=ROUND_HALF_UP)
p = float(p)
return p

print(my_round(2.675, d=2))
“`

実行結果:

“`python
2.68
“`

元記事を表示

PUDB_TTYを指定してPuDBを使う

# 免責
この記事に従って発生した如何なる損害も筆者は負うことができません。ご免なさい。

# 目的
私はCLIでpythonスクリプトをデバッグしたいので、PuDBというデバッグツールを使っています。
PUDB_TTYを指定してPuDBを使うときに少し苦労したので、インストール方法を残しておきたいと思います。

# PUDB_TTYを指定する場合のPuDBのインストール方法
現時点で最新のpudb==2022.1.3では、PUDB_TTYを指定するとurwidでエラー(ValueError: I/O operation on closed file.)が発生するようです。
エラーを回避するためにpudb==2021.2.2をインストールします。
“`shell-session:インストール
$ python3 -m pip install –user
pudb==2021.2.2
“`
# PUDB_TTYを指定してPuDBを使う

元記事を表示

たった4行で画像の中の人を数える方法

# どうも
face_recognitionについて調べてて意外と簡単だったので紹介します。

## 用意する物

+ face_recognition ←こいつが無いとお話にならない
+ 顔の入った写真 ←顔が隠れてないやつ

### 用意した画像
最近寒くなってきたのでこの画像にしました。
![3061076_s.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2915539/14237492-c38f-6cb3-4167-19390d3fbf4a.jpeg)

画像は[ここからダウンロードできます](https://www.photo-ac.com/main/detail/3061076)

:::note warn
注意
face_recognitionの学習モデルの関係で赤ちゃんの顔を認識できません。
:::
注意事項の[詳しい説明はこちら](https://github.com/ageitgey/face_recognition/blob/master/README_Japanese.md#%

元記事を表示

pipenv/pyenvでPython3.*をインストールするとBUILD FAILEDになる(macOS 11+)

### BUILD FAILED!
macOSで`brew`で入れた`pyenv`で`Python 3.*`をインストールしようとすると失敗する(`pipenv`の環境構築で`pyenv`でインストールしようとしても当然同じエラーが出る).

(MacBook Pro 2019, macOS 12.6, Intel Core i7)

“`shell
$ brew install pyenv

$ pyenv install 3.7.10

python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
Downloading Python-3.7.10.tar.xz…
-> https://www.python.org/ftp/python/3.7.10/Python-3.7.10.tar.xz
Installing Python-3.7.10…
python-build: use readline from homebrew
python-build: use

元記事を表示

40代おっさんStreamlitを学ぶ

## 本記事について

この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。

## Streamlit

treamlitとは、PythonでWebアプリケーションを作成するためのフレームワークです。

データサイエンティストやAIエンジニア向けに開発されており、バックエンド開発の知識がなくてもPythonのコードを数行書くだけで、気軽にデモ用のアプリを作成することができるのが特徴です。

### Streamlitインストール

“`bash
pip3 install streamlit
“`

### 確かめる

“`bash
streamlit hello
“`

自分ははじめてだったのでメールアドレス求められました。

サイトにアクセスできれば大丈夫です。

### Text elements

フォルダを作り
`app.py`を作成

“`python
import streamlit as st
st.write(‘利樹大好き’)
“`

st

元記事を表示

【Pytorch】勾配を計算する

# はじめに

NNの学習時で計算する、勾配を計算する方法を調べたのでメモしておきます。

“`math
\theta \leftarrow \theta + \eta \nabla_\theta L(\theta)
“`

通常は、これらはoptimizer が良しなに更新してくれるので、自分では learning rate をいじったりはしません。なので、何次元のパラメータかなども意識しません。が、それを見てみよう、というのが今回の趣旨です。

# Modelのgradient vector を計算

ネットワークモデルについては、pytorchのtuotrial に沿って行います。

https://pytorch.org/tutorials/beginner/blitz/neural_networks_tutorial.html

### モデルの定義とパラメータの参照

“`python: net.py
import torch
import torch.nn as nn
import torch.nn.functional as F

class Net(nn.

元記事を表示

【求対案】Python3 で時計算をやってみる

非情報学科生向けのプログラミング講義で、以下のような問題が出題されました。

>時刻を入力したら、時計の短針と長針のなす角の角度aを求めるプログラムを作成しなさい。
>(0°≦a≦180°)
>また、入力される時(h)と分(m)は以下の条件を満たす整数であるとする。
>0≦h<12, 0≦m≦59

正時(m=0)の場合

60分進むごとに、短針は30度進むこと、6時丁度のとき180°になることを考慮して、以下のような愚直解を考えた。

“`python
#h = 8, m = 0
def solution(h, m):
if m == 0:
if 6 > h:
a = 30 * h
elif h == 6:
a = 180
elif h > 6:
a = 360 – (h*30)
return a
#120
“`

すべての場合

しかし、以上のような解では、正時以外の場合対応できない。幸い、時と分は整数

元記事を表示

40代おっさんFastAPIを勉強する(簡易Web API作成)

## 本記事について

この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。

## 簡単なAPIを作って、ローカル環境で試す

main.pyを作成

“`python
from fastapi import FastAPI
from pydantic import BaseModel

class Data(BaseModel):
x: float
y: float

app = FastAPI()

@app.get(‘/’)
def index():
return {‘message’: ‘Hello Data’}

@app.post(‘/’)
def calc(data: Data):
z = data.x*data.y
return {‘result’: int(z)}
“`

sample.py作成

“`python
import requests
import json

def main():

元記事を表示

[python] ファイルにログを書き込む [日付]

# 0.初めに
タスクスケジューラ使って透明化してマクロを動かしていると、ごくまれに発生するバグのデバッグができない。
ファイルにログを残す必要を感じた。(バックグラウンド・透明化しないと作業の邪魔)
日付順に分けられたら便利そう。

# 1.ファイル名に日付を使ってログを書き込む
以下ソースの解説

yyyy-mm-dd.logというファイルがlogフォルダに作られる。logフォルダは手動で作ってください。
“w”は上書きモード
datetime.datetime.now()を書いてからログを書くことで時刻もわかる。

“`python:py_log.py
import datetime

py_log = open(“log\\”+str(datetime.date.today())+”.log”, “w”)  # 上書きモード
print(str(datetime.datetime.now())+”ログです。”)  # コマンドプロンプトにログを残す
print(str(datetime.datetime.now())+”ログです。”, file=py_log)  # ファイル

元記事を表示

ubuntu18.04 LTSに「Python3.11」をインストール

## はじめに
Python 3.11の安定板が2022年10月25日(日本時間)にリリースされました。
https://docs.python.org/3/whatsnew/3.11.html
早速、Ubuntuにインストールしてみます。
僕の環境は、Windows11/WSL2のUbuntu 18.04 LTSです。
以下の作業はWindowsターミナルでUbuntuのbashを選択してやってます。

## PPAリポジトリ追加
Python3.11は公式リポジトリにはありません。
まだの場合は、取得可能なPPAリポジトリ(ppa:deadsnakes/ppa)を追加します。
“`
sudo add-apt-repository ppa:deadsnakes/ppa
“`
実行時の画面イメージです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962789/7cf295f6-5a58-ae1c-94a5-4833a79d7c1c.png)

## リポジトリ追加後はupdat

元記事を表示

AirSimを用いた強化学習

今回はAirSimを用いた強化学習について自分なりに翻訳しまとめたので記事にしたいと思います。

以下では、AirSim API の周りに OpenAI ジム ラッパーを使用し、標準の RL アルゴリズムの安定したベースライン実装を使用して、AirSim に DQN を実装する方法について説明します。これらの例を実行するには、stable-baselines3 をインストールすることをお勧めします (https://github.com/DLR-RM/stable-baselines3 を参照してください)。

## 免責事項
まだ活発に開発されているため以下で共有するのは、パフォーマンスを向上させるために拡張および微調整できるフレームワークです。

## Gym wrapper
AirSim をジム環境として使用するために、AirSim 固有の step、_get_obs、_compute_reward、reset などの基本メソッドと対象のタスクを拡張および再実装します。これらの例で使用されている車とドローンのサンプル環境は、PythonClient/reinforcement_l

元記事を表示

文字列とリストの変換

文字列を一文字ずつにリスト化する方法、及び、一文字ずつのリストを文字列に統合する方法を知らなかったので書きました。

# 文字列を一文字ずつのリストにする

“`Python
# 「あいうえお」をリストにする
mojiretsu = ‘あいうえお’
mojilist = list(mojiretsu)
“`

# 一文字ずつのリストを文字列に統合する

“`Python
mojiretsu = ”.join(mojilist)
“`

元記事を表示

『サイバーセキュリティプログラミング第2版』の読書メモ (3)

ひきつづき『サイバーセキュリティプログラミング第2版』の読書メモです。

https://www.oreilly.co.jp/books/9784873119731/

# 3.4 ICMP のパース より

P63 Scanner クラスの sniff メソッドを抜粋。

“`python
def sniff(self):
hosts_up = set([f'{str(self.host)} *’])
try:
while True:
# パケットの読み込み
raw_buffer = self.socket.recvfrom(65535)[0]
# バッファーの最初の20バイトからIP構造体を作成
ip_header = IP(raw_buffer[0:20])
# ICMPであればそれを処理
if ip_header.proto

元記事を表示

Pythonで標準入力された場合の処理

競プロに手を出したばかりで標準入力の処理を最近知ったので、一番基本的なやつの備忘録です。
# 一つのものだけ標準入力された場合

“`Python
# 文字列が与えられた場合
a = input()

# 数字が与えられた場合
b = int(input())
“`

# 横並びで入力が与えられた場合

“`Python
list = input().split()
“`

※入力が縦一列の場合は「一つのものだけ標準入力された場合」を行数分繰り返せば良い。

後はこれの応用で、できそうな気がしました。
もう少し詳しくなったら加筆します。

元記事を表示

Airsimの画像 API

今回はAirsimの画像APIの記事を翻訳したものを記事にいたしました。C++でも同様なことができますが今回自分はPythonのコードのみを記載しております。C++をお使いの方は元の記事のコードをお使いください。
元のURLはこちらになります。https://microsoft.github.io/AirSim/image_apis/

# 画像 API
AirSim API に慣れていない場合は、まず一般的な API ドキュメントをお読みください。

# 単一の画像を取得する
「0」という名前のカメラから単一の画像を取得するサンプル コードを次に示します。 戻り値は、png 形式のイメージのバイト数です。 非圧縮形式やその他の形式、利用可能なカメラを取得するには、次のセクションを参照してください。

“` :Python
import airsim #pip install airsim

# for car use CarClient()
client = airsim.MultirotorClient()

png_image = client.simGetImage(“0”

元記事を表示

40代おっさんFastAPIを勉強する②

## 本記事について

この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。

## postメソッド

Pydantic は、Python の型アノテーションを利用して、実行時における型ヒントを提供したり、データのバリデーション時のエラー設定を簡単に提供してくれるためのライブラリです。

“`python
from typing import Optional
from fastapi import FastAPI
from pydantic import BaseModel

class Item(BaseModel): # BaseModelを継承してItemを作る
# データの構造を定義
name: str
description: Optional[str] = None
price: int
tex: Optional[float] = None

app = FastAPI()

@app.post(“/item

元記事を表示

[Python] PyAutoGUIをimportした時にtkinterの見た目が変わる事

### 問題
PyAutoGUIをimportした時にtkinterの見た目が変わった。
importすると、しない時と比べてくっきり(小さく)みえるようになる。
### 解決
PyAutoGUIに含まれる
“`Python
try:
ctypes.windll.user32.SetProcessDPIAware()
except AttributeError:
pass
“`
が問題。
逆に、くっきり(小さく)したかったら上記のコードを追加すればよい。

元記事を表示

OTHERカテゴリの最新記事