- 1. 機械学習で写真をHDRに
- 2. Python(Pillow)を使って複数の画像ファイルをリサイズする処理
- 3. [python] kd木を使った最近傍探索
- 4. yukicoder contest 333 途中参戦記
- 5. 【Python】並び順を無視してリストを比較するテスト(DeepDiff)
- 6. データ分析 コロナと少子高齢化
- 7. VSCODEでstreamlitのパスが認識されないエラー
- 8. CloudFormationテンプレートをPythonで読み込む
- 9. 【Project Euler】Problem 90: 2つの立方体の数字
- 10. TouchDesignerで人物認識(人数)してみた。(mac)
- 11. Cost Explorer API で特定のコストカテゴリの料金を取得する
- 12. 書籍「Pythonで儲かるAIをつくる」最新正誤訂正
- 13. 事業企画1年目のpython学習5日目
- 14. JSONとdict型の相互変換(Python)
- 15. PythonでのAPI Key管理方法
- 16. Pyhon line-bot-sdkによるLINE Bot備忘録
- 17. pythonでExcelのコピペ自動化
- 18. Python ログの重複が出たときに確認すること
- 19. Python pytestでcaplogがログをキャッチできないとき
- 20. Pythonでディレクトリを(存在するかどうか確かめて存在しなかったら)作成する
機械学習で写真をHDRに
# 写真をハイダイナミックレンジにする方法です

# 機械学習で写真を鮮明に
ローダイナミックレンジの画像を入力するだけで、ハイダイナミックレンジにレタッチしてくれるモデルがあります。
今回はCSRNetを使います。https://github.com/hejingwenhejingwen/CSRNet
# 使い方
CSRNetのリポジトリをクローンし、test_Enhance.y
Python(Pillow)を使って複数の画像ファイルをリサイズする処理
# 目次
[1.はじめに](#1-はじめに)
[2.使用環境](#2-使用環境)
[3.リサイズ](#3-リサイズ)
[4.ファイル取得](#4-ファイル取得)
[5.処理](#5-処理)
[6.ファイルを保存](#6-ファイルを保存)
[7.おわりに](#7-おわりに)# 1. はじめに
画像を一括でリサイズ処理することがあったので、備忘録としてQiitaに載せておきます。
今回はPythonとその画像処理用ライブラリであるPillowを使用しました。**参考/使用したサイト一覧**
[Python, Pillowで画像を一括リサイズ(拡大・縮小)](https://note.nkmk.me/python-pillow-image-resize/)
[「それ、pythonでできるよ」-画像のリサイズ-](https://python-climbing.com/image_resize_python/)
[Pillow公式ドキュメント](https://pillow.readthedocs.io/en/stable/)
[指定した幅のサンプル画像を作成してくれるーplac
[python] kd木を使った最近傍探索
# 説明
k-最近傍法(k-NN)アルゴリズムの勉強をしている時に、最近傍点を探すのにすべての点に対して計算していく(線形探索と呼ばれる)ととても効率が悪いということを聞いた。
効率よく探索する方法の一つにkd木というデータ構造をつかうものがあるらしいので、それを自分で実装してみた。
そして実際どの程度はやいのか、線形探索とkd木、そしてsklearnのNearestNeighborsを比較した。参考:Kd-treeと最近傍探索 https://hope.c.fun.ac.jp/mod/resource/view.php?id=15284
# 実行環境
* Intel(R) Core(TM) i7-8700 6コア12スレッド
* メモリ16GB
* windows10 64bit
* 仮想8コア、物理4コア
* Python 3.8.11
* ANACONDA
* JupyterLab 3.1.7# コード
## モジュール
“`python:modules
import numpy as np
import matplotlib.pyplot as plt
impo
yukicoder contest 333 途中参戦記
# yukicoder contest 333 途中参戦記
## [A 1850 Rewrite Product](https://yukicoder.me/problems/no/1850)
A = X – 1, B = 1 とすれば N を1減らす操作は常に行えるため、N を Y 以上の値にできれば必ず N = Y にすることができる. N が4より大きければ、半々に分ければ値を無限に大きくできる. (例えば A = 3, B = 2 として N = 5 から6に遷移し、A = 3, B = 3 として N = 9 に遷移できる). 以上を踏まえれば、`Y <= X or X > 4` で判定できることが分かる.
“`python
from sys import stdinreadline = stdin.readline
T = int(readline())
for _ in range(T):
X, Y = map(int, readline().split())
if Y <= X or X > 4:
print(‘Yes’)
【Python】並び順を無視してリストを比較するテスト(DeepDiff)
# やりたいこと
“`python
>>> dict_in_list1
[
{‘name’: ‘Reimu’, ‘spells’: [‘Musouhuin’, ‘niju-kekkai’]},
{‘name’: ‘Marisa’, ‘spells’: [‘non-directional laser’, ‘star-dust reverie’]},
{‘name’: ‘Alice’, ‘spells’: [‘hourai-doll’, ‘shanghai-doll’]}
]>>> dict_in_list2
[
{‘name’: ‘Marisa’, ‘spells’: [‘star-dust reverie’, ‘non-directional laser’]},
{‘name’: ‘Reimu’, ‘spells’: [‘Musouhuin’, ‘niju-kekkai’]},
{‘name’: ‘Alice’, ‘spells’: [‘hourai-doll’, ‘shanghai-doll’]}
]“`
1. dictを要素として持つlis
データ分析 コロナと少子高齢化
#分析内容
新型コロナウイルスが少子高齢化にどのような影響を与えたかを分析する
VSCODEでstreamlitのパスが認識されないエラー
VSCODEで以下のように実行すると「could not be resolved(reportMissingImports)」とエラーが発生した。(streamlit、numpy、pandasすべてで)
なんとか、解決できたため備忘録として記載しておく。
エラー内容「reportMissingImports」を調べてみると、以下のように表示されstreamlitを探せていないように感じた。
ターミナルでpythonと打ち、対話モードへ
import streamlitと
print(streaml
CloudFormationテンプレートをPythonで読み込む
CloudFormation(以下CFn)に使用するテンプレートファイルをプログラムで読み込んで色々するツールを作りたくなる事は往々にしてあると思います。
また、CFnには必須とも言える便利な組み込み関数が用意されています。# 問題
通常、PythonでYAMLを読み込む場合はPyYAMLやruamel.yaml等を用いて解析しますが、
`!Ref`などのCFn独自の組み込み関数の短縮形を表す感嘆符(“`!`”)から始まる文字列は、タグ[^1]としてYAMLで定義されているため解析時に以下のようなエラーが発生してしまいます。“`
yaml.constructor.ConstructorError: could not determine a constructor for the tag ‘!Ref’
“`[^1]: [2.4. Tags – YAML Ain’t Markup Language (YAML™) version 1.2.2](https://yaml.org/spec/1.2.2/#24-tags)
# 解決策
aws-cliパッケージに、この問題
【Project Euler】Problem 90: 2つの立方体の数字
* 本記事は[ProjectEuler](https://projecteuler.net/about)の「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。
### 問題 90.2つの立方体の数字
原文 [Problem 90: Cube digit pairs](https://projecteuler.net/problem=90)
**問題の要約:立方体の面に0-9の異なる数字を書いて2つ並べたときに以下のように平方数になる書き方を数えよ。ただし9と6は逆さに置いてどちらにも使える。**

以下のステップで全探索で解きました。
1. 0-9から6個の数字を選ぶ組み合わせを2つ作り、その直積を取る
1. それに6か9が含まれていたら、
TouchDesignerで人物認識(人数)してみた。(mac)
以下のページの通り、Mac Book Pro 2017で試した結果、
認識は一応できましたが、途中までしかうまくいかなかったので報告します。
(OpenCVのコードがなぜかエラーをはいて、四角形や文字を描いてくれなかったです。)https://qiita.com/sumita_v09/items/0b38ed21a28fa43e74c4
https://t-sumida.hatenablog.com/entry/2020/04/04/155246
### 0. 上の記事通り、Pythonの仮想環境を作って、TouchDesignerにパスを通してください。
### 1. OP Excuteを作成し、以下を記載。
以下を、DATの、OP Excuteに記載します。
ssdlite_mobilenetv2.onnxのファイルパスのところだけ自分の環境に合わせて変えてください。“`python
# me – this DAT.
# changeOp – the operator that has changed
#
# Make sure the corresponding
Cost Explorer API で特定のコストカテゴリの料金を取得する
## モチベーション
AWS Cost Explorer は 日次や月次レベルで AWS のコストと使用量の可視化、把握、管理を行うことができるサービスです。コンソールから利用できますが、API が用意されているため、プログラムから定期的に目的のコストを状況を抽出して通知するなどといった自動化が可能です。https://aws.amazon.com/jp/aws-cost-management/aws-cost-explorer/
CloudWatch の Billing メトリクスでも各アカウントの概算費用は取得できますが、アカウント ID の情報しか持っていません。そのためシステム単位等の特定のアカウント郡のコストだけを抽出することは CloudWatch メトリクスの機能だけでは実現できません。
AWS Billing and Cost Management にはコストカテゴリという機能があり、特定のルールでコストのグループを作成できます。Cost Explorer ではコストカテゴリでフィルターした料金を抽出できるため、CloudWatch メトリクスより簡単かつ、柔軟
書籍「Pythonで儲かるAIをつくる」最新正誤訂正
# はじめに
書籍「Pythonで儲かるAIをつくる」の著者です。[著者による書籍紹介ページ](https://qiita.com/makaishi2/items/47e9afc3162bfd9c3c3c)
[書籍サポートページ](https://github.com/makaishi2/profitable_ai_book_info/blob/master/README.md)
[ Amazonリンク](https://www.amazon.co.jp/dp/4296106961)書籍のNotebookをGoogle Colabで動かしてみたところ、動かないコードがあったり、出版時と異なるグラフが表示されることがあったりと、いろいろありました。
調べた結果(一部コード修正で対応した結果)を以下の形でまとめましたので、連携いたします。# 正誤訂正 第1版第1-3刷
|章 |ページ |内容 |補足|最終更新日|
|—|—|—|—|—|
|4章|p.77|コード4-1-6の図
(出版時)
事業企画1年目のpython学習5日目
# 本記事について
とある事業会社で事業企画をやっています。
元々は、新規営業1年→エンプラ営業3年やっていました。
事業企画への異動に伴って、ルーチンワークの自動化やスクレイピングに興味を持ちpython学習をスタートしました。
目的達成までは記事を執筆予定です。どうぞよろしくお願いいたします。# 開発環境
jupyterlab# 使っている本
すっきりわかるpython入門
https://sukkiri.jp/books/sukkiri_python# 勉強計画
週5日間ミニマム1h勉強する。
最初の1weekは1冊終わらせることをgoalに。
start@ 2022/2/21# 学習時間
1.0h# 学び
今日は繰り返しを学びたいと思います〜## pythonで部品を組み上げる
### 関数
今までの繰り返しなどを用いれば色々とプログラムを作れますが、見通しの悪いプログラム/修正難易度がかなり高いコードになっていきます。
そこで重要なのは、関数を自作することです。#### 関数の定義と関数の呼び出し
定義
def 関数名():
処理
※pyt
JSONとdict型の相互変換(Python)
元々[Scrapbox](https://scrapbox.io/Mijinko/JSON%E3%81%A8dict%E5%9E%8B%E7%9B%B8%E4%BA%92%E5%A4%89%E6%8F%9B(Python) “JSONとdict型相互変換(Python)”)に書いていた内容。
dict型変数の中身をファイルに書き出したい時などに重宝します。## JSONからdict型へ
### .jsonファイルから読み込んでdict(辞書)型変数に変換
“`python
import json
dir = “読み込み先ファイルパス”
encoding = “utf-8″ # 読み込むファイルのエンコードによって適宜変える。
with open(dir, mode=”rt”, encoding=”utf-8″) as f:
data = json.load(f) # JSONのファイル内容をdictに変換する。
“`### JSON形式の文字列からdict型変数に変換
“`python
import json
s = ‘{“name”:”太郎”, “value”: 1
PythonでのAPI Key管理方法
## PythonのAPI Key管理方法
複数のAPIを使用するとAPI Keyの管理が大変になる。また明示的にAPI Keyをファイルに記述することはセキュリティの問題でできない。今回はpythonによるAPI Key管理方法の一つであるdotenvやmodule化を紹介する。
## 1. dotenv
.envファイルに環境変数を記述することで、複数の変数を一つのファイルで管理することができる。“`python:lib/.env
VALUE_NAME = value
“`“`python:main.py
from dotenv import load_dotenv
dotenv_path = join(dirname(__file__), ‘lib/.env’)
load_dotenv(dotenv_path)
“`## 2. from *** import ( var1, var2 )
特定のpython code(line/key.py)に環境変数(var1, var2)を記述して、from lib.key import ( var1, var2 )で環境
Pyhon line-bot-sdkによるLINE Bot備忘録
### LINE Botの始め方
LINE Botの始め方は以下の記事を参照ください。https://qiita.com/grapefruit_0514/items/f7c64a51b3d85eb620ed
## RichMenuの追加
以下は、RichMenuを作成して特定の画像ファイル(png or jpeg)をメニュー画面にする。RichMenuの追加はBotサーバーではなく、LocalのPCから下記を実行することで追加される。RichMenuは作成して画像を正しくuploadされれば、deploy無しでもすぐに反映される。“`python
from linebot.models import (
RichMenu, RichMenuArea, RichMenuBounds, RichMenuSize,
MessageEvent, TextMessage, TextSendMessage,
SourceUser, SourceGroup, SourceRoom,
TemplateSendMessage, ConfirmTemplate,
pythonでExcelのコピペ自動化
テンプレートとなるexcelファイルに、複数のexcelデータの情報をコピーし、出力ファイルを作るプログラムをpythonで作りました。
# 環境
python3,xlwings,numpy をインストールしてください。
excelファイルの操作にはxlwingsライブラリを使いました。openpyxlも試しましたが、テンプレートファイルにグラフが含まれていたときに出力ファイルのグラフが消え、破損ファイル扱いになる、ロードが異様に遅い、などの問題が発覚したため、xlwingsが優れているようです。
# 仕様
まず以下のようなインプットファイル(.xlsx)を用意します。
このファイルをpythonプログラムに与えると、`template`ファイルを元にして、コピペが実行されます。基本的な動作はこの
Python ログの重複が出たときに確認すること
モジュールが増えてくるとロガーも必要に応じて追加しますよね。そのに落とし穴があって、ルートロガー以外にハンドラーを設定するとログの重複が発生するのです。
“`
{
‘root’: {
‘level’: ‘DEBUG’,
‘handlers’: [‘console’, ‘file’],
‘propagate’: True
},
‘mod1’: {
‘level’: ‘DEBUG’,
‘handlers’: [‘console’, ‘file’],
},
‘mod2’: {
‘level’: ‘DEBUG’,
‘handlers’: [‘console’, ‘file’],
},
}
“`こんな感じにやると、ログの重複が起こります。
ドキュメントの一番上にこのような注釈があります。
>注釈 ハンドラを、あるロガー と その祖先のロガーに接続した場合、同一レコードが複数回発行される場合があります。一般的に、ハンドラを複数
Python pytestでcaplogがログをキャッチできないとき
# 結論
:::note info
loggersのconfigでpropagateを**True**にする
:::“`python:dictConfigの例
{
‘loggers’: {
‘logger_name’: {
‘level’: ‘DEBUG’,
‘handlers’: [],
‘propagate’: True # ここです
}
}
}
“`# 参考
https://docs.python.org/ja/3/library/logging.config.html#module-logging.config
> loggers – 対応する値は辞書で、そのそれぞれのキーがロガー名になり、それぞれの値が対応する Logger インスタンスをどのように環境設定するかを記述する辞書になります。
>環境設定辞書は、以下のキーを検索されます:
> propagate (任意)。ロガーの伝播の設定です。
Pythonでディレクトリを(存在するかどうか確かめて存在しなかったら)作成する
# 1. はじめに
ディレクトリの作成方法やチェック方法をよく忘れるので、自分の備忘録的に残しておきます。
僕と同じようにすぐ忘れちゃう系エンジニアや駆け出しエンジニアのお役に立てればと思い、しれっと初投稿。ちなみに「あと10秒しか調べる時間がない…!」という危機に直面中の人は「[まとめ](#6-まとめ)」に飛んでください。
自分の動作環境は簡便ですがこんな感じです。
バージョン:Python 3.9.1
OS:Windows 10# 2. ディレクトリ作成
ディレクトリを作成する関数を調べると以下の2つが出てきました。
“`python
import osos.mkdir([ディレクトリパス]) # 1つめ
os.makedirs([ディレクトリパス]) # 2つめ
“`
ただし、1つ目の`os.mkdir`は、「…../存在しないディレクトリ/存在しないディレクトリ」のように深い階層で存在しないディレクトリ群を作ることができないようなので、基本的には2つ目の`os.makedirs`を使っていくのがよさそうです。よって今回は`os.makedirs`