忍者ブログ
物理学者(ポスドク)による日々の研究生活のメモ書きです ( python/emacs/html/Japascript/シェルスクリプト/TeX/Mac/C言語/Linux/git/tmux/R/ポケモンGO)
サンプルコード
import cv2

# Load an color image
img_orig = cv2.imread(fname, cv2.IMREAD_UNCHANGED)
img = cv2.cvtColor(img_orig, cv2.COLOR_BGR2RGB)
height, width, _ = img.shape

HSV_lower=[21, 67, 230]
HSV_upper=[164, 210, 254]

# HSVでの色抽出
hsvLower = np.array(HSV_lower) # 抽出する色の下限(HSV)
hsvUpper = np.array(HSV_upper) # 抽出する色の上限(HSV)

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # 画像をHSVに変換
hsv_mask = cv2.inRange(hsv, hsvLower, hsvUpper) # HSVからマスクを作成
hsv_img = cv2.bitwise_and(img, img, mask=hsv_mask) # 元画像とマスクを合成

plt.figure(figsize = (12, 12))
plt.imshow(hsv_img, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([]), plt.yticks([]) # to hide tick values on X and Y axis
plt.show()

# save fig as png
fname="hoge1.png"
cv2.imwrite(fname, hsv_img)
HSVは
・H : 色相 Hue
・S : 彩度 Chroma
・V : 明度 Value of Brightness





(2023/08/28 追記)

HSVの使い方メモ

HSV : Hue, Saturation, Value

HSVとは、色相(Hue)、彩度(Saturation)、明度(Value)の三つの成分からなる色の表現法のことで、RGBのような光の3原色(赤・緑・青)とは違う3軸で色を表現します。

① 色相(H):色の種類(例えば赤、青、黄色)
② 彩度(S):色の鮮やかさ。
③ 明度(V):色の明るさ。

HSV色空間は人間が色を知覚する方法と類似しているとされているため、例えば照明条件が変わっても色相にはあまり変化が及ばないなど、色の抽出がしやすくなるケースもあります。

■ 参考 : OpenCVによる特定色画素の抽出(RGB vs HSV)

Hは0~180の値のみを取るらしい
2倍すると、0~360度の角度に相当する
0~255ではないことに注意

わかりやすい画像
https://www.tumblr.com/coffeepote/726877360080683008

https://www.tumblr.com/coffeepote/726877386940055552



■ 参考 : 画像の色抽出 ~RGBとHSVでの色抽出~

PR
■ 参考 : examples of beamer class


どこかのタイミングで使ってみたいのでメモ








いずれ忘れるのでここにまとめておく・・・・

■ 生誕〜子供の顔を見にいく



https://coffeepote.tumblr.com/post/706220577696989184

24万から2ヶ月半経過〜





hogeという辞書型があるとして、これのkeyでfor文を回したいときは
for key in hoge.keys():
 print(key)


keyじゃなくて値自体でfor文を回したい時は、
for val in hoge.values():
 print(val)








% import os
% hostname = os.uname()[1]
'hoge-MacBook-pro-6.local'


久しぶりにコードを書いてて、numpyのarrayをバイナリ保存方法の記事を探してみたが、書いていない!
こんなに頻繁に使っているのに・・・


■ 参考 : NumPy配列ndarrayをバイナリファイル(npy, npz)で保存


aaaというarrayがあるとして、以下のように読み書きする
1つのarrayを保存する時は、特に辞書型とかは気にする必要はない
import numpy as np

# これでaaa.npyとして保存される
np.save('hoge', aaa)

# 読み込む時は
bbb = np.load('hoge.npy')
複数のarrayを保存する時はまた使った時に追記する・・・・・





(2023/04/18 追記)

意外とnumpyのファイルサイズがバカにならないことに気づいたので、出力時圧縮させてみる

これはsavezの代わりにsavez_compressedを使えばOK
使い方は同じ

ただ、作成時に時間がかかるらしい






argparse、とても便利。

■ 参考 : argparse --- コマンドラインオプション、引数、サブコマンドのパーサー

とりあえず、ここを一通り読めば大体わかる・・・・日本語だし



■ 参考 : argparse






コピペですぐに使いたい時向けのメモ
import argparse

parser = argparse.ArgumentParser(prog="hoge.py", description="do hogehoge")
parser.add_argument('-i', '--configuration', required = True, choices = configurations, help = 'name of configuration')
parser.add_argument('-o', '--output', required = True, type=str, nargs='+', help = 'name of output')
parser.add_argument('-c', '--flag_do_something', action='store_true', help = 'flag to do something')

args = parser.parse_args()
output = args.output
configuration = args.configuration
flag_do_something = args.flag_do_something
choicesは選択肢がリストに入っていない場合はエラーが出る
ただし、これを使うと、引数は1つしか取れない
なので、choicesの選択肢の中から2つとってくるとかはできなくなる・・・・

それを実現してるのが2つめのoutputの方
こっちはchoicesはなし
nargs='+' というオプションのおかげで、何個も引数を取れる
--output A B C
とすると
args.outputの中に["A", "B", "C"]と入っている
--output A, B, C
とすると、カンマが入ってしまってうまく動かないので注意


action='store_true'
とすると、このオプションがないときはデフォルトでFalseが代入される
このオプションが呼ばれるとTrueが代入される
(デフォルトが逆にFalseになるstore_falseもある)









使っているパッケージの .el ファイルをバイトコンパイルしていく
M-x byte-compile-file


目に見えて速くなった気がする・・・・







自分は住友生命の保険に入ってる

「生命保険料」と「介護保険料」は手元に届いた「生命保険料控除証明書」のハガキに従って数字を入力していく
以下のページがとてもわかりやすい

■ 参考 : 生命保険料控除申告サポートツール

「生命保険料」も「介護保険料」もそれぞれ40000円が控除の上限なので、
それを超えている場合は他の保険の入力は不要
他に県民共済にも入ってるが、上限を超えているので入力しなかった
また、子供県民共済を支払っている場合は、それも自分の年末調整に含められるらしい


■ 参考 : 生命共済の契約者は学生本人になっていますが、扶養者の年末調整で申告できますか?




配偶者控除について

■ 参考 : No.1190 配偶者の所得がいくらまでなら配偶者控除が受けられるか

■ 参考 : No.2672 年末調整で配偶者控除又は配偶者特別控除の適用を受けるとき


配偶者が、 失業保険をもらっていても失業保険は非課税なので所得には入らない

失業保険は、所得税とは別枠の税金を払うので、所得とは別扱い・・・だと思う、調べた感じ





■ 参考 : 自動車保険は保険料控除の対象になりません

自動車保険は保険料控除の対象にはならない(個人事業主はなるらしい)






(2022/11/18 追記)

■ 参考 : 年末調整よくある間違いはココ!その2:各種保険料控除









■ 過去記事 : List of named colors

とかmatplotlibのドキュメントで、148色の名前とかが表示されてる

が、全然使い方が書いていない・・・・

import matplotlib.colors as mcolors
import matplotlib.pyplot as plt
plt.plot(x, y, color=mcolors.CSS4_COLORS["skyblue"])

みたいな感じでOK


他にも

■ 過去記事 : matplotlib color for tasteful drafting

のように
colors = dict(matcolors.BASE_COLORS, **matcolors.CSS4_COLORS)
としておいてから、colors[coloname] でも指定できる









■ 参考 : 職名-職階対応表

リサーチマップでの名称だけど・・・・

特任助教は 助教相当で、Assistant professor

これだと、特任の意味が含まれていないが・・・

別のページを Specially Appointed Assistant Professor (Full time) とか書いてある

筑波大だと Junior Assistant Professor とも書かれてた (聞いたことないなぁ)




特任助教になりました
この任期が終わって、任期なしの職につけてなかったら困るなぁ〜
そのときは転職しよう
物理屋はなんでもできるから、まぁなんとかなるやろ




https://coffeepote.tumblr.com/post/699257787554938880


わーい
<iframe name="read_hoge" id="read_hoge" src="read_hoge.html" width="1500" height="800" onload="initializeForm()"></iframe>
みたいな感じで、htmlコードを用意する

read_hoge.htmlが子frame

これが再読み込みされたときに、関連するフォームを初期化(中身を消す)したい
あとはjavascriptの中で、initializeForm()という関数を定義すればいい
function initializeForm(){
// initialize
document.getElementById("aaaaa").value = ""
}
みたいな感じ








■ 参考 : color example code: named_colors.py

■ 参考 : [python] 辞書の結合


python3.5以降なら
d1 = {'one':1, 'two':2}
d2 = {'two':'ii', 'three':'iii'}
d3 = {'three':'III', 'four':'IV'}
d4 = {**d1, **d2, **d3}


python3.9以降なら
|という演算子で、2つの辞書型を連結できるらしい




plt.plot(x, y, label="hoge")
plt.legend(loc="upper right")
とかやると、右上にlegendが表示される
legen()でlocを指定しないとクッソ計算時間が掛かるので、位置は固定した方が良い・・・いや、マジで



枠外にlegenを置く方法もググったら色々と出てくる
bbox_to_anchorとかで位置を変えてやればいいらしい

■ 参考 : 備忘録:matplotlib の legend(凡例) の 位置を調整する

ただ、この方法でやってると画像からlegendがはみ出て全部表示されない・・・

plt.figure(figsize=[15, 9])
とかで図のサイズを横長にしても変わらず


■ 参考 : 備忘録:Pythonでグラフ凡例のサイズを自動調整する方法
plt.legend(loc='upper left', bbox_to_anchor=(1.0255, 1.0255))
plt.savefig('hoge.png', bbox_inches='tight')
のように、bbox_inchesというオプションを追加したら、画像内にプロットとlegendが入るようになった
ただ、legendの分だけ、図が小さくなるので最初から図のサイズを横長にしておく必要があるので注意









■ 参考 : matplotlib.pyplot.yticks

matplotlibのドキュメントによると

plt.yticks(10, 100, 1000)
とかすると、10, 100, 1000のところにticsを打ってくれる

yminとymaxを与えると自動的に1桁ずつticsを打ちたい
(調べても全然いい方法が出てこないので、力技でやっちゃう〜)




plt.yticks( 10**np.arange(np.floor(np.log10(ymin)), int(np.log10(ymax))+1, 1) )
logスケールなので、log10でyminとymaxの冪乗のみを取り出す
yminについては、floorで切り捨て
ymaxについてはintで切り上げをする
これだとarangeが1つ少なく出力するのでymaxの方は1を追加している

これは数字の冪乗成分のリストなので、10**で実際の数字に直す







<iframe name="read_iframe" id="read_iframe" src="read_iframe.html" width="1400" height="800"></iframe>
みたいな感じでhtmlにiframeを呼び出す
nameをつけること

ボタンではそのnameを使ってリロードする
<input type="button" value="reload table" onclick="frames['read_iframe'].location.reload();">
が、結局これは親のページのどこにボタンを置くかが難しくて使わなかった・・・

子のページ自身に
onclick="window.location.reload();
と書いたボタンを設置した
その方が見た目がスッキリしている


これだと、cacheに保存されている場合にページ内容が更新されないので

onclick="window.location.reload(true);

と書いた方が良い

(2022/10/24 追記)

今はこのスーパーリロードは使えないらしいので、代わりにリダイレクトを使って以下のようにするらしい

window.location.href = window.location.href







やりたいこと

・formのcheckboxがチェックされたら、それをトリガーにしてtext型のフォームに文字を入れる
・formのcheckboxがチェックが外されたら、それをトリガーにしてtext型のフォームから文字を消す



■ 参考 : 【Javascript】URLのクエリ情報からhtmlのフォームを埋める/チェックボックスをチェックする

↑これに似てるが、チェックボックスが外れた時にも対応しないといけないのでこの方法ではダメ




javascriptでoncheckedというcheckboxがチェックされたことを受け取るイベントハンドラがあるけど、
これだと、チェックが外れた時に対応できない
なので、onchangeというイベントハンドラを使う

■ 参考 : onchange - 変更があった時に発火する


・htmlコードにcheckboxを用意する
・checkboxにidを設定する
・checkboxに onchange="isChecked1(n)" のように追記しておく
・これで、このcheckboxが変更された時にisCheckedというjavascriptの関数が走る、nは引数

・javascriptで、そのisChecked()の中身を書く
function isChecked1(n) {
if (document.getElementById(n).checked) {
 parent.document.getElementById("list_reference").value = parent.document.getElementById("list_reference").value + n + ' ';
} else{
 parent.document.getElementById("list_reference").value = parent.document.getElementById("list_reference").value.replace(n + ' ', '');
 }
}
これで、checkboxがチェックされた時に元のhtmlの中のlist_referenceというテキストフォームにnと空白を追記する
チェックが外れたら、nと空白を消す










■ 参考 : Overleafを使った日本語論文の作成

メニューでコンパイラを「pdfLatex」→「Latex」にする.

latexmkrcを作成する
$latex = 'uplatex';
$bibtex = 'upbibtex';
$dvipdf = 'dvipdfmx %O -o %D %S';
$makeindex = 'mendex -U %O -o %D %S';
$pdf_mode = 3;
これでOK






(2023/01/01 追記)

よくよく読むと書いてあるけど、
\documentclass[dviout]{xxxxx}
のようにdvioutを追記しておいた方が良い
これをしないと、pngを貼ってコンパイルしたときに「boundary boxが見つかりません」という例のエラーが出まくる

その場合、 パッケージのincludeとかでは対処できない




(2023/01/01 追記)
\documentclass[dvipdfmx
]{xxxxx}
の方が正しいかもしれない・・・・

もし参考文献のciteとかが抜けているとすると
\usepackage{amsmath}
を追加すると解決するかも










import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)

ax.plot(range(10))
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis', color="red")

ax.tick_params(axis='y', colors='red')
plt.show()


labelの色は後からでも変えられる

ax.set_ylabel('Y-axis')
ax.yaxis.label.set_color('red')










xmlという拡張子を持ったファイルを再帰的にリストアップしたいとき
find /home/hoge/Dropbox -name "*.xml"




表示順をファイルの更新順にしたいとき
-print0でfindの結果を出力する
xargsでlsに渡す
lsは -tで時間順にする(古いものが先に表示される)、-1(いち)でファイル名のみをフルパスで表示する
find /home/hoge/Dropbox -name "*.xml" -print0 | xargs -0 ls -1t








readlink -f [シンボリックリンク]

返り値はフルパスになっている










hogeというarrayがあるとする
このarrayの要素が1以上かつ10以下のものだけを解析に使いたいとすると・・・
hoge[(1 <= hoge) & (hoge <= 10)]

&の代わりにandではダメ
条件式を()で囲わないとダメ




プロフィール
HN:coffee
職業:物理屋(自称)
趣味:映画鑑賞、登山
出身:大阪府の南の田舎
自己紹介:
import MyProfile
import coffee_pote from TWITTER
import amazonのほしい物リスト from WISH_LIST

print "先月子供が産まれました!"

# 最終更新 2022/10/25
カウンター
カウンター カウンター
ブログ内検索
ツイートするボタン
リンク
相互リンク募集中です (Twitterにてお知らせください)

Demo scripts for gnuplot version 5
(gnuplotのさまざまなデモ画像と作り方がまとめられている、眺めているだけでできるようになった気分になれる)

gnuplotスクリプトの解説
(米澤進吾さんの個人ページ、gnuplotと言えばこのかた)

gnuplot のページ
(Takeno Lab、うちのブログがリンクされていたのでリンク返し)

Twitterから映画の評価が分かる & 映画の鑑賞記録が残せる coco
(映画の感想をまとめられるサイト、いつもお世話になっています)

Astronomy Picture of the Day Archive
(天文や宇宙関連の最新の話題について画像とともにNASAが説明しているページ)

今日のほしぞら
(任意の時刻の空で見える星を表示してくれる、国立天文台が管理している)

GNUPLOTとアニメーション
(応用の項目の「見せてあげよう!ラピュタの雷を!!」あたりからすごすぎる)

読書メーター
(読んだ本をリストできる便利なサイト)

flickr難民の写真置き場
(20XX年、flickrは有料化の炎に包まれた。あらゆるflickr無料ユーザーは絶滅したかに見えた。 しかし、tumblr移住民は死に絶えてはいなかった。)

教授でもできるMac OS X へのLaTeX, X11, gccのインストレーションと環境設定
(阪大の山中卓さんのwebページ、タイトルにセンスが溢れている、内容は超充実してる、特にTeX関連、学振DCとかPDの申請書類作成時にはお世話になっております)

英語論文執筆用の例文検索サービス
(とんでもないものを見つけてしまった・・・・ arXivに収録されている 811,761報の 英語論文から,例文を検索するための検索エンジン)


Template "simple02" by Emile*Emilie
忍者ブログ [PR]