Python3関連のことを調べてみた

Python3関連のことを調べてみた

電気代を通知するLINEBotの開発【Part.1】

# 電気使用量を通知してくれるLINEbotを作ってみる

## 経緯
2023年8月、諸事情で引っ越しするにあたり、
[Octopas energy](https://octopusenergy.co.jp/friend/pure-duck-140)という電力会社に変更しました。
電気代支払いのためマイページにアクセスしたところ、開発者用APIを公開してくれていることを発見しました。
オクトパスエナジーの利用者の大半はこのことを気にも留めていないとおもいますが、
折角公式に提供してくれているので使ってみようと思います。

## 概要
今回は電気使用量(電気代)を通知してくれるLINEbotを作成したいと思います。
近頃、電気代の高騰で家計にダメージを受けているので、可視化することで少しでも節約を意識できるようするため
(と言うのはあくまで建前で単に面白そうだから作ってみたいだけ…)

## 開発環境
“`
Python: 3.8
Flask: 2.2.5
GraphQL: 3.4.1
line-bot-sdk: 3.1.0
“`
## やりたいこと
1.

元記事を表示

RealSense入門: カラーとデプス映像の取得方法

Intel RealSenseは、デブスカメラの1つです。カラーカメラの映像とデプスカメラの映像を取得でき、これにより、3Dスキャンや物体検出などのタスクを実行できます。本記事は、Pythonを使用してRealSenseからカラーカメラとデプスカメラの映像を取得していきます。

必要条件
RealSense: Intel RealSenseカメラ(例:D415、D435)を用意してください。
RealSense SDK 2.0: [Intelの公式サイト](https://www.intelrealsense.com/sdk-2/)からRealSense SDK 2.0をインストールしてください。
Python: Pythonがインストールされていることを確認してください。
pyrealsense2: Python用RealSenseライブラリをインストールしてください。
“`
pip install pyrealsense2
“`
## 1: ライブラリのインポート
“`pyhon
import pyrealsense2 as rs
import numpy as np
imp

元記事を表示

プロジェクトごとのPython仮想環境を構築する(Windows, Mac)

プロジェクトごとのバージョンとパッケージの切り替えはvenvを使います。

## Windows
1. インストーラーを使って希望のバージョンをインストールする
https://pythonlinks.python.jp/ja/index.html
何が入っているかわからない場合は、「プログラムの追加と削除」を見たらわかります。
Windowsストアからもインストールできますが、ややこしいのであったら消しましょう。

パスが通っている場合は `where python` で確認ができます。
※PowerShellの場合は `where.exe python`

2. Windowsはpythonランチャーでバージョン切替可能
“`bash
#デフォルト
py -V
#バージョン指定
py -3.10 -V
#pyのpip
py -m pip -V
“`

3. venvで仮想環境を作る

プロジェクトフォルダを作りその中で仮想環境作成
“`bash
# バージョン指定なし
py -m venv .venv
# バージョン指定する場合
py -3.10 -m venv .ve

元記事を表示

画像認識の処理の手順

画像認識は、コンピュータが画像や動画内の物体、パターン、特徴を、識別する事を言います。本記事では、画像認識の処理の手順に関して取り扱っていきます。

## 1: 画像の取得
目的: 画像の取得。
方法: WEBカメラ、デプスカメラ、画像、動画を取得して入力として使用。

## 2: 画像の前処理
目的: 画像を分析しやすくするために、ノイズを減らし、画像を標準化する。
手法: グレースケール変換、ヒストグラム均一化、ノイズリダクション、エッジ検出、リサイズ。

## 3: 特徴抽出
目的: 画像から識別可能な特徴を抽出する。
手法: エッジ検出、テクスチャ分析、形状抽出、カラー分析、SIFT(Scale-Invariant Feature Transform)、HOG(Histogram of Oriented Gradients)など。

## 4: 特徴選択/削減
目的: 分析のために最も有用な特徴を選択し、次元の呪いを避ける。
手法: 主成分分析(PCA)、線形判別分析(LDA)、オートエンコーダなど。

## 5: 分類/認識
目的: 抽出された特徴を使用して、画像内のオブジェ

元記事を表示

Pythonのクラス

# Pythonのクラスについて学習
Javaとの同じ点や異なる点を整理しながら、Pythonのクラスについて学習する。

## クラス定義

~~~
class クラス名:
~~~
Javaとは異なり、publicとかの修飾子がクラスにはない。

## 属性
~~
class クラス名:
属性名 = 値
~~
クラス定義と同じように修飾子はないが、それ以外は特に違いがない。

## メソッド
以下の3種類ある。
– インスタンスメソッド
インスタンス化されて実行できるメソッド
– クラスメソッド
@classmethodデコレーターをメソッドに使う。Javaにはないメソッド。
インスタンス化しなくても使えるという点は静的メソッドと同じ。
コンストラクタメソッドと同じようにインスタンス化したクラスを返却してくれるので、datetime.now()のような呼び出し側のコーディングで、目的や状態を分かりやすくするメリットがある。
– 静的メソッド
@staticmethodデコレーターをメソッドに使うことで定義できる。インスタンス化せずに使うことができるもの

元記事を表示

ROIとは

ROI(Region of Interest)は「関心領域」と訳され、画像処理、画像認識、機械学習などで用いられる用語です。具体的には、画像または動画の中で特に注目して、処理や分析を行いたい部分を指します。ひと昔前では、このROIを手動で設定していましたが、現在は、色検出や差分などを用いてROIを設定する事が主流です。

## ROIの使用例:
物体検出: 画像内の特定の物体や特徴を識別する際、その物体が存在する領域をROIとして特定し、分析の対象とします。

画像処理: 特定の操作やフィルタリングを画像の特定部分にのみ適用する場合、その部分をROIとして定義します。

追跡: ビデオ内の特定の物体を追跡する際、フレームごとの物体の位置を表す領域がROIとなります。

特徴抽出: 機械学習やパターン認識で、特定の特徴を抽出するためにROIを用いて、画像の特定の部分に焦点を当てます。

## ROIの選択方法:
手動: ユーザーが直接、画像上で関心領域を選択します。

自動: アルゴリズムが特定の基準(例:色検出、差分、エッジ検出)に基づいてROIを決定します。

事前定義済み: 特定の

元記事を表示

qrcodeライブラリで簡単QRコード作成術

QRコードを生成するためには、Pythonのqrcodeというライブラリを使用することで生成ができます。本記事では、QRコードを生成し、それを画像として保存する方法を解説します。

↓実際に生成したQRコード
![qr_code.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/632959/2cc79cb6-16b3-b260-3524-1cc42f8b8bd2.png)

必要なもの
Python: プログラミング言語として使用。
qrcode: QRコードを生成するためのライブラリ。

## 1: qrcodeライブラリのインストール
まず、必要なライブラリをインストールする必要があります。コマンドラインまたはターミナルで以下のコマンドを実行してください。

“`
pip install qrcode[pil]
“`

## 2: QRコードの生成
以下のコードは、data変数に入力したデータのQRコードを生成し、それを画像ファイルとして保存します。
“`
import qrcode

# 生成

元記事を表示

Docker is all you need.

# Docker is all you need.
Dockerを利用してVSCodeでPythonのVersionを管理する方法を解説します。
多分これが一番バージョン管理しやすいと思います。
10分でできます。多分。Node.jsやNGINXとかの環境構築にも使えます。
# Dockerをインストールする
Docker公式サイト

# VSCodeでDev Containersをインストールする
![スクリーンショット 2023-12-30 16.59.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3311006/f706f33b-6e3d-6fad-645d-ca056cfb0972.png)

# コマンドパレットを開く
Winなら“`Ctrl+Shift+P“`, Macなら“`Cmd+Shift+P“`ですかね。
コマンドパレットを開いたらまずは“`Dev Containers“`と打ち

元記事を表示

ACL Practice Contestをac-library-pythonで解いてみたよ。(G~L問題)

# はじめに
2023年8月にあった大幅なAtCoderの言語アップデートで、PythonにもACLとよばれる競プロライブラリが追加されました。

https://github.com/not522/ac-library-python/

この記事では、そのライブラリの使い方を [ACL Practice Contest](https://atcoder.jp/contests/practice2) の問題を通して見ていきます。

この記事ではG問題以降を見ていきます。A~F問題については下の記事を見てください。

https://qiita.com/hyouchun/items/4958618268407a5442cc

:::note info
ac-library-pythonの具体的な使い方が分かります。
:::
:::note warn
内部の詳細な実装は、上のGitHubを参考にしてください。
核となる問題の解き方は、ユーザー解説などを参考にしてください。
:::

# G – SCC

## 問題

https://atcoder.jp/contests/practice

元記事を表示

ACL Practice Contestをac-library-pythonで解いてみたよ。(A~F問題)

# はじめに
2023年8月にあった大幅なAtCoderの言語アップデートで、PythonにもACLとよばれる競プロライブラリが追加されました。

https://github.com/not522/ac-library-python/

この記事では、そのライブラリの使い方を [ACL Practice Contest](https://atcoder.jp/contests/practice2) の問題を通して見ていきます。

この記事ではF問題までを見ていきます。G問題以降については下の記事を見てください。

https://qiita.com/hyouchun/items/3eee499a7ef31ca55b46

:::note info
ac-library-pythonの具体的な使い方が分かります。
:::
:::note warn
内部の詳細な実装は、上のGitHubを参考にしてください。
核となる問題の解き方は、ユーザー解説などを参考にしてください。
:::

# ac-library-pythonのインストール方法
1分で終わります。
タスクバーなどにあるパソコン内

元記事を表示

【Python】四分木の中で最も複雑な領域を分割し続けるアートを実装してみた

# はじめに
数ヶ月前に、[このツイート](https://x.com/BaroqueEngine/status/1549009803925950464?s=20)が目に留まりました。

https://x.com/BaroqueEngine/status/1549009803925950464?s=20

非常に魅力的で、自分でも作りたいと思ったのですが、アルゴリズムや実装が公開されているにもかかわらず、実際にやっている人が少ないようでした。

そこで、本記事では、Pythonの画像処理ライブラリPillow(PIL)を使用して、四分木の中で最も複雑な領域を分割し続けるアートの実装方法について解説します。

# アルゴリズム

以下の操作を再帰的に繰り返します。
– キャンバス上のすべての矩形領域の中から、最も複雑な領域を選んで四分割する。
– 新しくできた矩形領域において画像の複雑度(score)と平均色を求め、領域を平均色で塗りつぶす。

詳しくは元記事を参照してください。

https://zenn.dev/baroqueengine/articles/ccf3ac7a2c93

元記事を表示

手軽に実現!OpenCVとWebカメラでQRコードの位置を特定する方法

本記事では、OpenCVを使用してWebカメラからQRコードの位置を特定します。
![スクリーンショット 2023-12-30 134537.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/632959/e0c8664d-8434-8aaa-ee2d-142ece09e411.png)

QRコードの生成に関しては以下の記事を参照してください。
[QRコードの生成](https://qiita.com/kakuteki/items/3b24bd240da50553dc94 “”)

必要なもの
Python: プログラミング言語として使用。
OpenCV: 画像処理を行うためのオープンソースライブラリ。

## 1: 環境設定
まず、Pythonがインストールされていることを確認してください。次に、OpenCVをインストールします。コマンドラインまたはターミナルで以下のコマンドを実行します。

“`
pip install opencv-python
“`

## 2: カメラからの映像取得
Webカ

元記事を表示

OpenCVでwebカメラの映像を表示する

画像認識においてpythonでwebカメラの映像を使用することがよくあります。そこで今回は基本的なwebカメラの映像をOpenCVで取り込み表示するコードを書いてみたいと思います。

まず、PythonでOpenCVを使用するためには、OpenCVライブラリをインストールする必要があります。pip install opencv-pythonを実行することでインストールできます。

以下のコードはウェブカメラの映像を表示するための基本的なコードです。

“`python3:app.py
import cv2

# ウェブカメラのキャプチャを開始
cap = cv2.VideoCapture(0)

# キャプチャがオープンしている間続ける
while(cap.isOpened()):
# フレームを読み込む
ret, frame = cap.read()
if ret == True:
# フレームを表示
cv2.imshow(‘Webcam Live’, frame)

# ‘q’キーが押されたらループから抜け

元記事を表示

[Python][Julia]Project euler4 (プロジェクトオイラー4)

#### Project euler Ploblem 4 (プロジェクトオイラー4)
[Largest Palindrome Product](https://projecteuler.net/problem=4)

備忘のために残しておく。

## 問題
#### 問題文
回文の数はどちらから読んでも同じである。2つの2桁の数字の積から作られる、最大の回文の数は 9909 = 91 * 99 である。
2つの3桁の数字の積から作られる最大の回文の数を求めよ。

A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9909 = 91 * 99.
Find the largest palindrome made from the product of two 3-digit numbers.

## 答え
906609

#### 解答の方針
3桁どうしを掛けた値は最大で6桁(1000 ×

元記事を表示

[Python][Julia]Project euler3 (プロジェクトオイラー3)

### Project euler Ploblem 3 (プロジェクトオイラー3)
#### Largest Prime Factor

備忘のために残しておく。

2023/12/29 コメントで指摘の通り、誤ったコードを書いていたので修正しました。
(コメントありがとうございます)

## 問題文
13195の素因数は5,7,13,29である。
600851475143の最大の素因数は?

(原文)
The prime factors of 13195 are 5,7,13 and 29.
What is the largest prime factor of the number 600851475143?

## 解答

#### 答え
6857

#### 解答の方針
求める値の平方数までの素因数を前から順にリストに追加する。
例えば、12の場合だと[3,2]、25の場合だと[5]。
今回の場合は、[6857, 1471, 839, 71]
リストの一番前が、最大の素因数となる。
素数の判定アルゴリズムに「エラトステネスの篩」があるが、今回は使用しなかった

元記事を表示

駄目グラフ003

ダイナマイトプロットは描かない

## ![20111210220621.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2611739/ed27d75a-0f9d-74d5-bdbe-211dc2d9f653.jpeg)

そもそも,エラーバーも何を基準にするか。何を基準にしても,わかりにくいことに違いはないが。

元記事を表示

【配列に対しての複雑な処理】集団行動

https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__group_move

“`py
N,Q = map(int,input().split())
A = [a for a in range(1,N+1)]
for i in range(1,Q+1):
tmp = []
tmp = input().split()
if tmp[0] == ‘reverse’:
A.reverse()
elif tmp[0] == ‘swap’:
num = A[tmp[1]+1]
A[tmp[1]+1] = A[tmp[2]+1]
A[tmp[2]+1] = num
elif tmp[0] == ‘resize’:
c = int(tmp[1])
A = A[:c]
print(*A,sep=”\n”)

“`

元記事を表示

ヒューリスティック(AHC)用にoptunaで雑にパラメタチューニングできるようにした

# やった事
– スコアを出せるコードと調整するパラメタが決まっている状態でパラメタ探索をできるようにした
– google colab上で動く言語、コードなら調整すればいけそう
– 探索はoptunaに全まかせ
– 探索速度は少し妥協
– テスト毎にosでコードを実行している為

# 動機
AHC_029に参加した際に、パラメタ探索の為に無駄に提出回数を稼いでしまった事を後悔しているので、どうにかしたいと思い作成しました

![スクリーンショット 2023-12-27 16.58.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3292016/3c0a8c4c-7388-4ceb-e7b4-025b74e854ea.png)

# 参考にしたサイト
https://blog.knshnb.com/posts/ahc007-optuna/

# 参考先と異なる点
– google colabで動かす事を重視
– pythonユーザーに使いやすく

# 作成し

元記事を表示

[Python][Julia]Project euler2 (プロジェクトオイラー2)

#### Project euler Ploblem 2 (プロジェクトオイラー2)
Even Fibonacci Numbers

備忘のために残しておく。

## 問題文
フィボナッチ数列において、新しい項は前2項を足したもので生成される。
1と2から始めた場合、最初の10項は以下の通りである。
1,2,3,5,8,13,21,34,55,89,…
400万を超えない値のフィボナッチ数列の項を考えたとき、値が偶数の項の合計を求めよ。

#### (原文)
Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be
1,2,3,5,8,13,21,34,55,89,…
By considering the terms in the Fibonacci sequence whose values do not exceed four million, fin

元記事を表示

Python初心者が実装で気づいたこと

最近社内のpythonツールの修正を改善したく、実装してみました。
すると、はまったとか気づいたことがありますので、忘れないようそして他の方の参考になれるようにこの記事に書くようにします。

# 勉強になった点

## int型でファイルへの書き込みはできない

pythonは変数定義の際に型の指定は必要ないが、method呼び出す際に型がチェックされることがあると今回のことでわかりました。
書き込みは以下のコードで実現しています。
“`Python
filePath = {ファイルのパス}
pageNoFile = open(filePath, ‘w’)
pageNoFile.write(pageCount)
pageNoFile.close()
“`

pageNoみたいな数字をファイルに書き込むと以下のエラーになります。
“`
TypeError: write() argument must be str, not int
“`
pageCountが数字とかのint型である場合、以下のようにstring型に変換できます。
“`
str(p

元記事を表示

OTHERカテゴリの最新記事