「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



ここのところちょっとずつ進めてた、Python、Pillow、
tkinterでGUIツール作るという話をちょっと進める。

いきなりGUIツールに仕上げるより、まずはCLIで動作を
確認しておくほうが手っ取り早そうだなと思って、
主にCLIだけで処理させてみる。

まず、640×480ドットの小さい画像を入力に使って、
Pillowライブラリのgetpixel、putpixel通して、単純に
入力した画像を1ピクセルずつ新しい画像エリアに
コピーしていって、結果的に同じ画像ファイルを出力
するっていう、すごい単純な処理を行ってみた。

…ものすごい遅い。こんな小さな画像ファイルなのに、
コピーだけで4秒くらい掛かる。(実測)
イツキのハチゴーより遅い。


調べてみると、getpixel、putpixelは、死ぬほど遅い
らしい。しかも、こんな単純なコピー処理したいわけじゃ
なく、1ドットにつき周囲のドットを参照しながら、
平均値よりも大きいか小さいかで判断したいので、処理
時間は2桁以上は遅くなるんだよな。

困ったな。他のライブラリ使うのもいやだしな。ちょっと
別の抜け道を探そうと考えてみる。

ピクセルへのアクセスが遅いのなら、そのアクセス回数
を減らす方向で考える。

一旦、全ピクセルのうち、処理で使う緑プレーンだけを
読み出して、二次配列(リストのリスト)に溜め込んで
おくことにする。配列への読み書きなら、もうちょっと
早いだろうと。

で、ためしに、1000×1000マス分の配列を用意して、
そいつを参照しながら平均値計算を行って、出力先には
仕方ないのでpitpixelで書き込む。

実際に処理を動かしてみると、1000×1000ドットで4分ほど
掛かっちゃう。

うーーーーん。すごく単純に処理を組んだので、1ドットの
周辺の平均値を計算するのに、毎回441ドット分の積数を
計算してからドット数で割り算。処理内容的にはすごく無駄
なせいもあって、すごい遅い。簡単に一桁は早く出来そう
ではあるものの、処理内容的にはどんどん面倒な感じに
なっていっちゃう。

しかも、平均値を求める範囲を、仮置きで周囲の21×21ドット
にしてるので、出てきた画像データを眺めると、ちょっと
残念な感じになっちゃう。
(文字や図は思ったとおりに浮き出るんだけど、文字も図も
描かれてない部分は、ノイズレベルの濃淡を拾って無理やり
図にしちゃう…)

まぁ、残念な感じになってる部分は、もともとそうなるだろう
と想像していたところなんだけど、その辺の弁別値をもう少し
なんとか工夫しないと、きれいな画像データは得られない
よなぁ。

それ以上に、処理時間を短くしないと、まともに使えない…
もしかして、メモリの食い方がおかしな状態になってて、
仮想メモリ食いすぎてスワップしてたりする?とか疑って、
vmstatでメモリ使用状況眺めつつ、HDDのアクセスランプ
もみながら動かしてみても、そんな無駄なメモリアクセスは
してないみたい。大丈夫みたいだな。


配列(リスト)のアクセスでこんなに時間が掛かるなら、
これを他のピクセル読み書き方法に換えたとしても、
根本的な処理時間短縮には至らないよなぁ…


もうちょっと、処理内容の工夫を考えないといけないな。
まずは、平均値を、毎回21×21ドット全部の積数を計算
しなおしているのは無駄なので、そこに梃入れするかな。

あぁ、ちょっと頭が痛い話だな。こまったな。

そもそも、各種画像ソフトのガウスボケって、どういう計算
してるんだろうな?あれよりもずっと簡単な計算なはず
なんだけどな。





https://headlines.yahoo.co.jp/videonews/ann?a=20181218-00000019-ann-bus_all

5パーセントポイント還元に「穴」っていうならまだしも、
「不正取得」はおかしいよな。合法だもん。

それを不正っていうなら、
  「法律に基づいて適法に行っています」
って言ってた政治家先生とか、役所の偉い人たちも不正行為
をしていることになるよな。
単純なダブルスタンダード。





https://kuruma-news.jp/post/120059

マツダ、スズキはMT車いっぱい出してていいよねぇ。
ホンダは、面白いクルマ、なくなっちゃったんだよな。




https://twitter.com/dameningen1gou/status/1074551103117656065

MKS単位系じゃないなぁ。




https://twitter.com/mt3678mt/status/1074425446731735040

もう、これシステムとして破綻してるよな。
こんな安全じゃないシステムが個人情報扱ってるの、
やめちゃえば良いのに。





https://twitter.com/knife9000/status/1074591539651764226

類似点。
っていうか、もともとまねしてるからだろうけどな。
オリジナルを考えるほどの知恵はなさそうだからな。

で、鳴り物入りは全敗。

https://www.asahi.com/articles/ASLDK5V6TLDKULFA03D.html

こんなんなっちゃって、だれが支持するんだろうなぁ?
不思議で仕方ないんだけどな。



コメント ( 0 )




Python、Pillow、tkinterでゴニョゴニョとツール作るのは
引き続きちょっとずつやってるところ。

GUIツールをいきなり作るのは、仕上がるのにちょっと時間
かかりそうなので、まずはCLIツールを作っちゃって、それに
GUI機能をあれこれ肉付けしていくほうが楽じゃないかなと
思って、まずCLI版ツールを作り始めたところ。
(最初からそうすればよかったのにな)




で、ふと脱線。Fire 7タブ買って弄ってて思う。
カメラ2個付いてるから、どうせなら、シャッター機構の
無いこのカメラ使って、タイムラプス撮影できるといい
よなと。
探してみる。

https://mypocket.ntt.com/column/how-to-take-a-time-lapse-video.html

Lapse Itって言うのが良さ気なんだけど、これってFireでも
使えるの?と思って調べてみたら、Amazonのアプリサイト
でも公開してた。早速インストール。まだ使ってない。あとで。


で、そのタイムラプスでふと思ったんだけど、せっかく光学
パーツとか操作系とかちゃんと一式そろってるコンパクト
デジカメがいっぱいあるのに、なんでこんなにタイムラプス
で使いたくなるカメラが存在しないの?と。

特にキャノンなんて、タイムラプスに使うと妙な機能と
バンドルされちゃってて、ピントをわざわざアウト
フォーカスにして、ミニチュアみたいな動画にしちゃう
機能がオフに出来なかったり、ケーブルレリーズとか
まともに使えなかったり。

なんでもかんでも中に詰め込んでくれなくてもいいのに、
欲しい機能は入ってないんだよなと。最近のデジカメ。

で、Androidにしても、iPhone/iPadにしても、アプリを自分
で組める人なら、いろんなアプリ作って、自在にカメラ機能
を扱えるよなぁ。

…なんでコンデジって、自分でアプリ組んで動かすことが
出来ないんだろう?という、ふとした疑問が。
いや、実際は、キャノンなら「CHDK」を使えば、それなりに
カメラ機能のもろもろを、スクリプトから自在に扱うことも
出来なくは無いんだけどもね。使いにくいし、CHDK使ってる
時のLCD画面って、とても見づらいし扱いにくい。

そもそもそんなジャイルブレイク使うことなく、簡単に
スクリプト書き込んで動かせる、そんなカメラは無いの
かなぁ?どこか作ってよ…というところまで考えて、
ふと気づく。

各社コンデジが、Arduino環境に対応させてくれれば良いん
じゃね?と。
ぶっちゃけ、ハードウェアの開発は入らないと思うんだ
よね。既存のデジカメハードに、新しいファームを書いて
終わり、みたいな。

で、PCとUSBケーブルで繋いで、あとはカメラの各機能を
ライブラリ通してアクセスするようなスクリプト書いて…
書き込み。


カメラの機種ごとに、Arduino用ライブラリを提供して
さえくれれば、標準のArduino環境から各社のカメラ用に
プログラム書いたり、シリアルデバッグしたり。

で、ある程度スクリプトが煮詰まったら、それを書き込んだ
カメラ単体だけ持ち歩いて遊べる、と。
場合によっては、複数プログラムを書き込んでおいて、状況
に合わせて切り替えて使えるのもいいかもしれん。

で、素のカメラ単体(販売時点の状態)は、シャッター押すと
写真が撮れる機能だけ載ってて、あとは何も機能が付いてなく
てもいいというくらいに割り切っちゃう。


まぁ、どう考えても儲かりそうに無い、コアな人だけが買う
代物だから、儲かりそうにはないけれど。でも出たらオイラ
は欲しいな。

新しいいろんな機能とか全然要らないから、古いコンデジ
にArduino対応ファームを書いて、「ハイこれ」って感じで
出してくれればすごい満足なんだけどな。
(名前くらいは変えないとだめか)


まぁ、やっぱり、「測光」「標準露出計算」「絞り操作」
「シャッタースピード操作」「キー入力」「LCD表示」
「ファイル出力」「一覧表示」なんてあたりの機能は、
標準で付いてて欲しいかな。

機種によって、DIGICみたいな画像処理エンジンに優劣が
あったり、ストロボとか、外部I/F(ケーブルレリーズや
赤外線通信)、外部バッテリー、ホットシューアダプタ、
GPS、Wi-Fi通信、なんてものが載ってたり載ってなかったり。
もしくは、CPUの処理能力に優劣があって、動画処理にも
堪えられる高性能CPUや、電池食わないで長時間撮影に
堪えられたりみたいな、機種ごとに特徴があると面白そう。

あぁ、そんなコンデジがあったら、絶対楽しいと思うんだ
けどな。

セキュリティー上あれこれ制約がありそうなスマホ/タブレット
に比べて、デジカメは「カメラ」だから、カメラに特化した
機能だけ考えれば、セキュリティーまわりはあまり心配は
しなくて大丈夫だと思うんだよな。

オイラ大好きペンタックスあたりが作ってくれないかなぁ。




https://uhb.jp/news/6682/

複線ドリフト。




https://www.youtube.com/watch?v=YV0rrMLKya4

デュアルドライバイヤフォン。へぇ。




https://twitter.com/dgo0104/status/1048080794894233601/photo/1

ホワッツマイケル。



コメント ( 0 )




https://web.casio.jp/dentaku/fxcg50/

昨日のカシオのPython使える関数電卓。いろいろ細かい
ところまで説明あった。スプレッドシートとかまで使える
んだな。

せっかくグラフィック表示ができて、PCにUSBで繋がる
んだから、ハードコピーをPCに転送したり出来るといい
んじゃないかなぁ?と思って調べてみたんだけど、その辺
の機能があるかどうかはよくわからなかった。




https://twitter.com/absol161/status/1072475085150277632

かに座。




Pythonのtkinter周りをもうちょっと調べる。昨日のプログレス
バーについては、さくっと動かしてみて、ちゃんと動くことは
わかった。

https://python.keicode.com/advanced/tkinter-widget-progressbar.php

で、あとはサムネイル表示と原寸大表示を切り替えたときに、
原寸大ではスクロールバー欲しいよな、と思って、ちょっと
検索。

https://python.keicode.com/advanced/tkinter-widget-text.php

https://www.pytry3g.com/entry/2018/07/26/222615

この辺をちょっと試してみたいところなんだけど、tkinter
って、スクロールバーといえばテキストエリアの操作用に
使う感じに見えるなぁ。グラフィック表示と絡めて云々
っていうケースが見当たらない。自分でゴリゴリと書く
必要がありそうだなぁ。


あと、tkinter周りのもろもろのノウハウ的なページを
いくつか見つけた。かなり良質な感じの。

http://nobunaga.hatenablog.jp/entry/2018/06/16/173234

https://qiita.com/canard0328/items/5ea096352e160b8ececa

http://d.hatena.ne.jp/shouh/20161113/1479032448

この辺。
それにしても、相変わらずフレームとか、ウィンドウ上
での配置とか、その辺のイメージがまだいまいちしっかり
頭の中に図が描けてないんだよな。ちょっとあれこれ
配置だけで弄ってみるか…





https://www.dtmstation.com/archives/22902.html

ディープラーニングで合成音声の歌声がこれまでより
自然な感じに。

まぁ、やっぱり合成音声って感じはあるけど、これまで
よりも自然な感じになって来てはいるよなぁ。すごい。




Fireタブレット、買ったはいいけど、なにか独自のアプリ
作ってインストールして持ち歩くとか、できちゃうもの
なの?と思って、ちょっと検索。

https://developer.amazon.com/ja/docs/fire-tablets/ft-create-your-first-kindle-fire-app.html

https://blogs.osdn.jp/2017/07/11/firehd8.html

やっぱり、Android Studioを使うみたいだなぁ。Amazon
公式サイトでもAndroid Studioについて案内している。
へぇ。




https://twitter.com/bakuwara7777/status/1073952407367741440

なかなか面白かった。
よくまぁ、こういう風に瞬間的に面白いことを思いつく
もんだなぁ。




https://twitter.com/ohira_y/status/1073731863124926464

控えめに過ぎるかな。
これはそのまま「あたまおかしい」でいいと思う。




https://twitter.com/thksngy/status/1073216503242059777

電気信号とか、音声信号とかを数学使って解析したり
信号抽出したりするには複素数平面や行列式、微分方程式、
ベクトルや数列が必要なのはあたりまえだろうし、あと、
古典/近代物理、化学、そして最近また特に応用範囲が
広がった統計学なんかも、現代社会では必要不可欠な
もので、それがいったいなんなのかを知らずに生きてる
人のことを見聞きするたびに、ふと上野動物園にあった
おサルの電車っていうものをおもいだすんだよな。

新興国で作ってる工業製品が、完全にブラックボックス
になっちゃってる現代、それを疑問なく使って、怖く
ないのかなぁ?という気がする。



コメント ( 0 )




あぁ、参った。ちょっとした操作ミスで、Firefoxの
URLバーの右側にある、星型のブックマークアイコン
が消えちゃって、プチパニック。



どうやら、ブックマークを消そうとして、これを
右クリックしたときに出てくる「アドレスバーから
削除」をやっちゃったみたい。



こんな風に、星印が消えちゃう。そうすると、その
ページがブックマークされているのかどうかも、
にわかに判らない。困る。

いろいろ操作してみても、元に戻す方法が見当たらず。
なんかいろいろと迷った挙句、



アドレスバーの「…」マークをクリックして、表示
される「アドレスバーに追加」って操作をすると、
元通りになるみたい。一件落着。




引き続きPython。時間無いので、とりあえず調べ物だけ
をちゃちゃっと。

まずは、配列の初期化とか普通にさくっとやればいいの
かなぁ?と思って、ちょっと調べてみると、

http://delta114514.hatenablog.jp/entry/2018/01/02/233002

https://note.nkmk.me/python-list-initialize/

へぇ。配列の初期化にforを使うのか。やっぱり、高級言語
とは言っても、ポインタの概念が解らないと、いろいろと
理解できない部分って、残ってるんだよな。やっぱ、
アセンブリ言語大事。

とか思って、二次配列使うつもりで居たのに、よく考えて
みたら、平均値取るだけだから、配列使わなくてもいい
んだよな、と気づいちゃった。


あと、処理を行ううえで、時間が掛かっちゃうと思うので、
tkinterでプログレスバー使いたいよなと。

https://python.keicode.com/advanced/tkinter-widget-progressbar.php

https://python-minutes.blogspot.com/2016/08/pythongui.html

うん。この辺を参考にしてみよう。




https://twitter.com/sradjp/status/1072008017716031488

VWは、燃料燃やして走るクルマを、2026年最後に作ると
言っている。ってことは、それ以降はもう新しいクルマは
全部EVだけになるのか。
レンジエクステンダーとしても内燃機関使わないって
言ってるのかな?

以前、マルチエアの件で触れた、

https://brown.ap.teacup.com/nekosan0/3206.html

油圧とソレノイド制御で、バルブ動作を厳密に最適化して、
燃焼効率高めたり、いろいろ道は残っていると思うん
だけどな。
なにより、まだバッテリー性能の低さ(容量、充電時間)
から、EVなんて現実的とは思えないんだけどなぁ。

それより、EVなんて運転しても楽しくなさそう。




https://www.youtube.com/watch?v=i3eJHPGfiZw

Kingstoneの、2100円のSSD(120GB)。思ったよりも
まともみたいだなぁ。まぁ、そりゃそうなんだろうけど。




https://qiita.com/NaoyaOura/items/1081884068fe3ea79570

これ、前にもみたかなぁ?chocolatey。
Windows用のapt-getみたいなパッケージ管理システム。

どんなソフトが管理されてるんだろう?




https://blog.adafruit.com/2018/12/06/python-snakes-its-way-to-the-casio-graphing-fx-cg50-prizm-calculator-casioeducate-casiojapan-micropython-micropython/

CanonのPythonが動く電卓。
「CASIO Graphing fx-CG50 PRIZM calculator」

(訂正:Canonじゃなかった。Casio)

NumWorksみたいにPythonが動く電卓第2弾だな。

USBでPCに繋ぐと、USBストレージとして認識されるみたい
で、スクリプトをそこに書き込めば、電卓側で実行できる
みたい。PC上でスクリプト書けるのは便利じゃね?何気に。

いくらくらいなんだろう?

あと、キー入力とか時間調整とかの命令もあるのかな?
あったら、ゲーム作ったり出来るんだけどな。




https://www.nicovideo.jp/watch/sm33975233

久々にむにむに教授。自転車のキャスター角とジャイロ効果。
面白い。




https://twitter.com/okasanman/status/1073444743550402561

賃金上昇が実感できる「お友達」以外は、はなから眼中に
無いってことだろうな。お友達の財布がふくらめば、
自分のところにも還流してくる、と。

なんで日本はフランスみたいにならないんだろう?
フランスの民主主義は、民衆が勝ち取った民主主義
だけど、
 「日本はアメリカに押し付けられた民主主義」
って、誰かさんたちは思ってるだろうからな。



コメント ( 0 )




バッテリーがほぼ限界になってる古いタブレット。
Fire7買ってほぼお役ごめんになってるので、なんなら
第2の余生として、やっぱり液晶を取り出して使いたい
よなぁ、と。検索してみる。

http://www.srchack.org/article.php?story=20140202131552539

やっぱり、aliexとかで変換基板買って、HDMIとかに繋ぐ
っていう感じなのかな。こないだ買ったやつがそのまま
使えたりするかなぁ?
なんにしても、箱に収めないといけないので、タブレット
のあの薄いボデーには収まらないから、3Dプリンタなんか
が使いたくなるよな。


あと、標準のSilkブラウザ以外になにかいいのないかな?
と思って検索。

http://azshop-life.net/2016/11/14/fire-browser/

どうやら、普通に入れられるのはOperaだけみたい。
あまりあれこれ入れちゃうと、ストレージが8GBしか
ないからあまりあれこれ入れられないんだよな。

どっちかっていうと、Google Play入れたいんだよな。
Google Playでどのくらい容量食っちゃうのかが気に
なるところなんだよな。

https://www.youtube.com/watch?v=Nk2vrAx__f0

Google Play入れた後に初期化すると、容量は初期状態
に戻るみたいだから、ちょこっとやってみてもいいかな。





「フォレスターは走り続けるbot」、結構面白かったん
だけど、なくなっちゃったな。なにかあったのかな。





https://twitter.com/aitendo_soku/status/1073512599852072960

あぁ、これ面白そうだな。マウスのエンコーダ。まぁ、
ロータリーエンコーダの形状違いなんだけどな。





https://twitter.com/aroerina2/status/1072808490408673280

USB接続のWindows用ボリウム。なかなか良さ気なんだけど、
これって、外部機器のボリウムは調整できないんだろうな。
内蔵スピーカとか、3.5mm音声出力とかだけだよな。

BTとか、USB-DACで繋がってる機器の音声もこれで調整
できるなら、結構便利っぽい気がするんだけど、でも
そうなっちゃったらそうなっちゃったで、意外と支障が
でるかも知れないし、なんともいえないところがあるな。
でもまぁ、右下のタスクバーのアイコンからいちいち
調整しなくていいのはすごく魅力だな。

これって、Windows標準のドライバで動くチップみたいの
があるのかな?Arduino Leonardoとロータリーエンコーダ
でこういうの作れないかなぁ?

探してみたら、あった。

http://morecatlab.akiba.coocan.jp/lab/index.php/2012/09/usb-hid-volume-controller/

https://deviceplus.jp/hobby/entry_063/

やっぱり、Arduino Leonardo(ATMega 32U4)だな。


そういえば、aliexで、USBコネクタに直接挿せるタイプの
32U4極小基板見つけたんだよな。

https://ja.aliexpress.com/item/BadUSB-ATMEGA32U4-Arduino-R3-DC-5/32847715254.html

DigiSparkっぽいけどチップは32U4。これだと、USBデバイス
を作れば、そのままUSBコネクタに挿せてグーなんだよな。
4ドルちょっと。(送料入れて約5ドル)

これ1個2個欲しいんだよな。




https://twitter.com/HacksterPro/status/1072193213866352641

ESP32で顔認識?




https://twitter.com/umekich61523936/status/1073132358881046530

ひどいな。「岩戸景気さんといざなぎ景気さんに
怒こられろ!」っていわれるレベル。




https://www.youtube.com/watch?v=-1jNKjn_3d0

インドのサッポロ一番塩ラーメンの作り方。この動画
すごい面白いな。味わいがある。
ただ、このインド人のオジサンの味付けだと、ちょっと
しょっぱい気がするな。

あと、「まだ熱い鍋」→「たまごの上」も味わいが深い。




https://twitter.com/HCI_Research/status/1072897289952333824

アノマロカリス。




https://twitter.com/tokoya/status/1073405868782178304

GPD MicroPC、シリアルポート付いてるのか。

なんにしても、このくらいの、クラムシェル型の超小型
Linux端末が欲しいんだよなぁ。
電池長持ちするヤツ。っていうか、単三電池とかでも
動かせちゃうような超小電力なやつ。





https://twitter.com/itm_nlab/status/1073351912257396741

ベーマガ。電子工作マガジン12月19日号の別冊付録。
へぇ。
何機種何本のプログラムだろう?



コメント ( 0 )



« 前ページ 次ページ »