今日(4月4日)に近くの片平市民センターに行ってみた。
一部であるが桜が開花していた:
近くの臥竜梅も満開:
RawTherapeeがヴァージョン5.9から局所処理に使えるようになってその処理を時々使っている。今回は背景をぼかすことにつかった。
写真は蝋梅をアップで撮ったものであるが、背景のボケが甘く蝋梅がすこし沈んでいる。そこで背景のボケを少し強くしたい。ボケの処理は簡単にできるがそれを背景にのみに作用させたい。この処理をRawTherapeeの局所処理で行う。

まず処理の適用部分の切り出しをする。RawTherapeeの領域選択はアルゴリズム的である。適用部分のなかに典型的なスポットを選択する。そのスポットを参照点として各ピクセルの色空間上の距離を計算する。これが予め定めてある閾値より小さければそのピクセルは参照点と同類であるとする。そうでなければこのピクセルは処理範囲外とする。このようにして参照点と同類であるかどうかで処理領域を決める。
背景をぼかす領域の設定では画面全体を選択してぼかす処理をしたくない点を参照スポットとする。今の場合は中心にある蝋梅の花弁。
つまり背景をぼかす処理をするときにはその処理をしたくない領域をまず確定させる。次にその「リヴァース」をとる。これで領域が反転する。この反転した領域がぼかしをかけたい領域となる。
適用確認ボタン(ΔEのプレヴュー)がにオンなっていると、適用領域に半透明のマスクがかかる。適用領域が期待したものになるように閾値(実は複数個ある)を変えてみる。
このようにして得られた領域に適当なガウスぼかしを施した画像を以下に載せる:

ScriptForgeはLibreOfficeをプログラム的に操作することを目的としたモジュール作成のためにLibreOfficeから提供される膨大なライブラリー群である。Pythonマクロ作成にはその一部であるクラスCreateScriptServiceを使う。
ScripyForgeはLibreOfficeのインストールと一緒にインストールされるがxubuntuを含むubuntuではシステムワイドなパッケージとして別個にインストールする:
sudo apt install python3-scriptfoge
またこのクラスを継承した各種ドキュメント用、インタフェース用のクラスが用意されてる。これらの説明はここにある。
ここではスプレッドシートCalcをPythonマクロで操作するために必要なそのサブクラスを使う。
このサブクラスで使える様々のメソッドの説明はここにある。
例題は「今開いているシートのセルA!に書かれている数値を読み込み、それに書かれていた数値に1を加えた数値を再度セルA1に書く出す」というものである:
# coding: utf-8
from __future__ import unicode_literals
from scriptforge import CreateScriptService
doc = CreateScriptService("Calc")
def increment_cell(args=None):
value = doc.GetValue("~.A1")
print(type(value))
value += 1
doc.SetValue("~.A1", value)
g_exportedScripts = (increment_cell, )
GetValue、SetValueが使ったメソッドで、引数の中の~はCalcで今開いているシートを指す。最後の行はこのモジュールでマクロとして登録する関数名をタプルで並べる。ここの例ではincrement_cellがそれである。
ScriptForgeなしでもマクロは書けるが、これを使った方がプログラムはすっきりする。
今日(3月12日)に散歩中に近所の家の梅の花が一輪咲いているのを発見した:

もしかしてと思い東北大学片平キャンパスに行ってみた。そこの梅はかなりの花を付けていた:

LibreOfficeのPythonマクロ環境は前回に述べた。ここではこの環境で便利なsite-packegeを使うことについてのべる。
windowと異なり、linuxではPythonマクロのために特別なPythonインタプリタが用意されてるわけではない。LinuxではLibreOfficeを起動した環境下にあるPythonを使う。従ってそのPythonにインストールされているsite-packegeがそのまま使える。Pythonプログラミングの作法として仮想環境を使うことを以前述べたが、Pythonマクロ環境もこの仮想環境から起動したPythonを使うことが合理的である。
LibreOfficeの起動は仮想環境のターミナルエミュレータから
soffice -n
を入力する。これで新規のdocumentでLibreOfficeが立ち上がる。様々なフラグは
soffice --help
で見れる。
このLibreOfficeのマクロ作成ではプログラミングには仮想Pythonでインストール済のsite-packageが利用できる。
ここまでのシナリオでいけるかなとおもったらPython仮想環境から立ち上げたLibreOfficeではマクロのための統合環境APSOが起動でエラーになる。
前回の続きである。LibreOfficeのマクロは様々なプログラミング言語で作れるようになっていて、Pythonもその1つである。
xubuntuでは別な方法もあるようであるが、ここではwin10でも使ったAPSOというツールを使った環境を作る。このツールの登録はLibreOffice.Calcを立ち上げてツール->拡張機能と進むと登録画面が出るので予めダウンロードしておいたAPSOを登録する。オプションでプログラミングで使うテキストエディタを指定する。xubuntuではnanoやplumaなどが使えるようになっているが、nanoはそのままではダメらしい。plumaは/usr/bin/plumaで引数なしでで立ち上がる。
ユーザが作るマクロの保存場所は決まっていてlinuxでは
.config/libreoffice/4/user/Scripts/python/
である。初期状態では必要なディレクトリが存在しないので適宜に作る。
またユーザが作る汎用的なモジュール(例えばメッセージボックス)は
.config/libreoffice/4/user/Scripts/python/pythonpath
に保存する。これらのモジュールはマクロでインポートして使うことができる。
APSOの起動はLibreoffice.Calcの画面のメニュの
ツール->マクロ->Pythonスクリプトの管理
で行う。APSOの初期画面がでるのでそのメニュから作業を始める(注:APSOの最新版はAPSO1.4.4であるが、ここでは安定版のAPSO1.3.2を使う)。
APSOはよく出来ていて開発中のマクロのデバッグ実行やPythonシェルの表示(マクロの中のprint文の出力はこのシェルにでる。これもデバッグに重宝)などの機能を持っている。なおLibreOfficeのPythonのヴァージョンは3.12.3である。
これで準備は完了。
写真は新しくなった評定河原球場のスコアボードである。

嘗ては木製でかなり鄙びた感じでカメラの被写体になった。

娘が「遅い」といって手放したlenovoに軽いOSを入れてみた。このlenovoは確かに遅くwin10では精神衛生上よくない遅さである。CPUやメモリーが貧弱な割にハードディスクは容量が1000GBと豊富であるので、軽快に動くと定評のあるxubuntuをwin10とdual bootでインストールする。
xubuntu自体のインストールは問題なく進行したがその手前でPCのBIOSの画面を出すことに苦労した。最も確実な方法はNOVOボタンを使う方法であるらしいが肝心のそのボタンの場所が見つからなかった。このPCでは向かって左の側面のSDカードの挿入口の横に小さな穴がありそれがNOVOボタンでPCの電源を落とした状態でこのボタンを楊枝などで押すとBIOSの画面が立ち上がる。
【Python環境】
xubuntuのインストールでシステムワイドのPython(3.12.4)がインストールされるがPythonプログラミングは仮想環境で行うことが作法である。これはプログラミングが実験的な操作を伴うことが多くシステムワイドなPythonをいじりたくないからである。
そこでhome直下に作業ディレクトリを作りそこをPythonプログラミングの作業領域とする。ターミナルエミュレーターでそこに入って
python3 -m venv MyEnv
と入力。MyEnv(名前は任意)というディレクトリができ必要なファイルがインストールされる。
仮想環境の活性化は以下のコマンドによる:
source MyEnv/bin/activate
これでエミュレーターのプロンプトの先頭に(MyEnv)が付き仮想環境にいることがわかる。ここのPythonは初期状態ではパッケージは何もインストールされていない。プログラミングに必要なパッケージをインストールする。因みに不活性にするには仮想環境内でi以下のコマンドを入力:
deactivate
次に総合開発環境を使えるようにする。以前かからPythonに付属して配布されている総合開発環境idleを愛用しているので仮想環境でもこれを使う。xubuntuで配布しているidleはシステムワイドなPython用でそのままでは仮想環境では使えない。そこで仮想環境下で以下のコマンドを使う:
python3 -m idlelib.idle
これで仮想環境にリンクしたidleが立ち上がる。
以上でPythonプログラミングの環境ができた。
米ケ袋の蝋梅が咲いていた。今日(2月9日)とは少し早いような気がするが、春は近いことを感じた。


Neil Youngが若い時に歌った”Four Strong Winds”もいい。歌詞は:
Four strong winds that blow lonely Seven seas that run high All those things that don′t change come what may But our good times are all gone And I'm bound for moving on I′ll look for you if I'm ever back this way Think I'll go out to Alberta Weather′s good there in the fall I got some friends that I can go to working for Still I wish you′d change your mind If I asked you one more time But we've been through that a hundred times or more Four strong winds that blow lonely Seven seas that run high All those things that don′t change come what may But our good times are all gone And I'm bound for moving on I′ll look for you if I'm ever back this way If I get there before the snow flies And if things are goin′ good You could meet me if I send you down the fare But by then it would be winter There ain't too much for you to do And those winds sure can blow cold way out there
手紙の文面のような歌詞が面白い。Neil Youngの歌声はここにある。