- 1. キーとバリュー
- 1.1. キー一覧
- 1.2. 入力されたデータ
- 1.2.1. 『サイバーセキュリティプログラミング第2版』の読書メモ (4)
- 1.2.2. Tableau OnlineへのJWTを用いたSSO
- 1.2.3. Webスクレイピングアプリケーションを作成。
- 1.2.4. 【文字検出_備忘録】OpenCV X Python エッジ検出処理
- 1.2.5. 【文字検出_備忘録】OpenCV X Python グレースケール画像の2値化
- 1.2.6. 【文字検出_備忘録】OpenCV X Python 画像の読み込みとグレースケール化
- 1.2.7. ライブラリー無し自作関数 Python3 西暦 ➡ 和暦変換 関数
- 1.2.8. 天気予報APIで翌朝の降水確率を取得してLineで通知する
- 1.2.9. 【Python3】Decimal.quantizeを用いて小数点第○位以下を四捨五入
- 1.2.10. PUDB_TTYを指定してPuDBを使う
- 1.2.11. たった4行で画像の中の人を数える方法
- 1.2.12. pipenv/pyenvでPython3.*をインストールするとBUILD FAILEDになる(macOS 11+)
- 1.2.13. 40代おっさんStreamlitを学ぶ
- 1.2.14. 【Pytorch】勾配を計算する
- 1.2.15. 【求対案】Python3 で時計算をやってみる
- 1.3. 正時(m=0)の場合
- 1.4. すべての場合
40代おっさんStreamlitを学ぶ②
## 本記事について
この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。## 前回の記事
## Streamlit
### Input widgets
“`python
import streamlit as st
import pandas as pd
import numpy as npcsv = pd.read_csv(‘dummy.csv’) # csv読み込み適当なの入れました
df = pd.DataFrame(csv)
if st.button(‘住所’): # ボタン
st.dataframe(df[‘住所’])if st.checkbox(‘氏名’): # チェックボックス
st.dataframe(df[‘氏名’])options = st.multiselect( # オプションで選択肢の中
Python Language – format() built-in Floating Point Rounding(浮動小数点数の端数処理 – 丸め)
Python では、他の多くの言語と同様に浮動小数点数における端数の丸めが行われます。
__15. Floating Point Arithmetic: Issues and Limitations__
https://docs.python.org/3.9/tutorial/floatingpoint.html__The Perils of Floating Point__
https://www.lahey.com/float.htmPython では IEEE 754 の `Round to nearest, ties to even(最近接丸め(偶数)= 偶数丸め(= 銀行家の丸め =Bankers’ Rounding ))` を採用しています。
__IEEE 754__
https://en.wikipedia.org/wiki/IEEE_754#Rounding_rules※ decimal 等で丸めの方法を変更することも可能です。
__Rounding modes__
https://docs.python.org/3/library/decimal.htm
Python Language – Index & Slice
Python には様々な Data Type があり、それらの中には Index や Slice でその一部を取得したり、変更したりできるものがあります。
__3. An Informal Introduction to Python__
https://docs.python.org/3.9/tutorial/introduction.html__5. Data Structures__
https://docs.python.org/3.9/tutorial/datastructures.htmlここでは、以下の代表的な Data Type について、使用方法の違いをご紹介します。
– String (Str)(文字列)
– List(リスト)
– Tuple(タプル)
– Set(集合)
– Dictionary (Dict)(辞書)#### 環境
以下の Python 3.9 / Linux 環境で確認します。
“`shell
$ uname -si
Linux x86_64$ python3.9 -V
Python 3.9.13$ python3.9
Python Language – Comprehension(内包表記)
Python では、いくつかの言語がサポートしている内包表記 (Comprehension) が使用可能です。
__5.1.3. List Comprehensions__
https://docs.python.org/3.9/tutorial/datastructures.html#list-comprehensions__リスト内包表記__
https://ja.wikipedia.org/wiki/%E3%83%AA%E3%82%B9%E3%83%88%E5%86%85%E5%8C%85%E8%A1%A8%E8%A8%98ここでは、以下の代表的な Data Type について、簡単な使用方法をご紹介します。
– String (Str)(文字列)
– List(リスト)
– Tuple(タプル)
– Set(集合)
– Dictionary (Dict)(辞書)#### 環境
以下の Python 3.9 / Linux 環境で確認します。
“`shell
$ uname -si
Linux x86_64$ python3.9 -V
Python 3.9.
PythonでFlaskを使ってPOSTで送られたデータの確認用
PythonでFlaskを使い、ウェブアプリを作っています。
POSTで送られたデータの確認をしたいと思い、コードを書きました。
このコードは、汎用で使えると思います。
HTMLの部分は、base.htmlで作って継承できるように書きました。“`Python
{% extends ‘base.html’ %}
{% block head %}
データの出力
{% endblock %}
{% block content %}キーとバリュー
キー一覧
{% for key in user_data.keys() %}
- {{ key }}
{% endfor %}
入力されたデータ
{% for key, value in user_data.items() %}
- {{ key }}: {{ value }}
{% end
『サイバーセキュリティプログラミング第2版』の読書メモ (4)
ひきつづき『サイバーセキュリティプログラミング第2版』の読書メモです。
https://www.oreilly.co.jp/books/9784873119731/
4.3 章まで進みました。記載されているコードをじっくり確認しながら読み進めています。
## P86 detect 関数より
python から OpenCV を使って画像データに人の顔が含まれるかを検出する関数です。が、「ある一行」の理解につまづきました。
“`python
rects[:,2:] += rects[:,:2] // ⑤
“`P87 の解説によると、
> … rects は (x, y, width, height) という形式であり、x, y は四角形の左下の座標、width, height は四角形の幅と高さを表す。
> ⑤に示す Python のスライス構文により上記の rects データを (x1, y1, x1+width, y1+width) ― 言い換えると (x1, y1, x2, y2) ― に変換することで、cv2.rectangle の引数として利用しやすくしていTableau OnlineへのJWTを用いたSSO
ハロー世界。りくとんです。みんな元気にSSOしてますか?(挨拶)
この記事はTableau Onlineの埋め込みビューに対してSSOするために、2022年1月に実装された連携アプリの機能を利用して実装した記事です。
一応(あんま役に立たない)公式ヘルプ載せときますね。◆Tableau Cloud ヘルプ – 直接信頼を使用して接続済みアプリを構成する
https://help.tableau.com/current/online/ja-jp/connected_apps_direct.htm# 概要
・Tableau Onlineの埋め込みビューに対してSSO。
・SAML認証のIdP立てるのだるいし借りるとランニングが…。→連携アプリで解決。
・JWT発行するにはPythonかJavaのサンプルコードが載ってた。今回はPythonで実装。
・環境依存したくないからGAE上にデプロイしよう。AjaxでJWT取得してSSO。
・JWTとはなんぞやという知識は先人のQiitaを参考にしてください。◆Qiita – 認証におけるJWTの利用について
https://qiitaWebスクレイピングアプリケーションを作成。
最近は、Udemyの講座である「爆速で5つのPython Webアプリを開発」をやっている。
https://www.udemy.com/course/python-streamlit/
本日は最後のアプリケーションであるWebスクレイピングを用いた簡単なアプリケーションを作成した。
そのアプリケーションをHerokuと呼ばれるものにデプロイをして自動的に更新できるようにした。
実際にはクレカの情報が入力出来なかったので自動更新はまだ実装していない。他に自分でアプリケーションを作成して自動更新したいようなら別のクレカで試そうと思う。
下のURLが今日の成果物です。お疲れ様でした。https://udemy-streamlit-demo.herokuapp.com/
【文字検出_備忘録】OpenCV X Python エッジ検出処理
続きをやっていきましょう。今日は2値化ファイルの画素値出力をした後、エッジ検出処理をやります。
### 画素値出力
“`
#2値化ファイルの画素値出力
test_f = open(TEST_file_path,’w’) #txtファイルを含めたパスを用意しました。y_depth = img_gray_th_otsu.shape[0]
x_depth = img_gray_th_otsu.shape[1]for y_num in range(y_depth):
for x_num in range(x_depth):
test_f.write(“y_num[“+str(y_num)+”] x_num[“+str(x_num)+”]:”+str(img_gray_th_otsu[y_num][x_num])+”\n”)test_f.close()
“`としてみると、ちゃんと0か255になっていることがわかりました。
ヒストグラムみると若干違ったのでちょっと怪しんでましたが、まぁ良さそう。### エッジ検出
Canny法でのエッジ検出をやってみます。【文字検出_備忘録】OpenCV X Python グレースケール画像の2値化
こんにちは。続きをやりましょう。
### グレースケール化の確認
グレースケール化までやったのでそれができてるかの確認をします。
せっかくなので、ndarrayの出力も試したいなと思って、以下のコードを書きました。
“`
for y_num in range(0,5):
for x_num in range(0,5):
print(“print[“+str(y_num)+”]”+”[“+str(x_num)+”]:”+str(img_gray[y_num][x_num]))“`
img_gray[y_num][x_num]の部分で、画素値の出力をしてます。
実行結果。
“`
print[0][0]:251
print[0][1]:251
print[0][2]:251
print[0][3]:251
print[0][4]:251
print[1][0]:251
print[1][1]:251
print[1][2]:251
print[1][3]:251
print[1][4]:251
print[2][0]:251
print[2][1]:251
print[2【文字検出_備忘録】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):
passdef 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_arrdef 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.675print(round(f, 2))
“`実行結果:
“`python
2.67
“`本当は2.68にならなければなりませんが切り捨てされてしまっています。この事象に対する対策です。
# Decimalを用いる方法
Decimalを用います。
“`python
from decimal import Decimal, ROUND_HALF_UPdef my_round(x, d=2):
p = Decimal(str(x)).quantize(Decimal(str(1/10**d)), rounding=ROUND_HALF_UP)
p = float(p)
return pprint(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.10python-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: use40代おっさん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 Fclass 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
“`すべての場合
しかし、以上のような解では、正時以外の場合対応できない。幸い、時と分は整数
関連する記事
OTHERカテゴリの最新記事
-
- 2024.09.19
JavaScript関連のことを調べてみた
-
- 2024.09.19
JAVA関連のことを調べてみた
-
- 2024.09.19
iOS関連のことを調べてみた
-
- 2024.09.19
Rails関連のことを調べてみた
-
- 2024.09.19
Lambda関連のことを調べてみた
-
- 2024.09.19
Python関連のことを調べてみた