今日も微速転進

ここではないどこかへ

Inkscape 0.92 がリリースされたけど……

一月一日付でInkscapeの新バージョンがリリースされています。

inkscape.org

Mac向けのバイナリ提供は今のところ無し。

背景?

開発者向けのメーリングリストからの断片的な情報*1によれば、 いつの間にか公式プロジェクトとしてはMac向けのバイナリパッケージは提供しないという決断をしたらしいです。

Macを保有するアクティブな開発者が不在なのか、経緯はイマイチ不明です。

Mac向けバイナリパッケージを提供しないほうが、アクティブなMac向けの開発者が参加するきっかけになるという目論見だったのでしょうか?

正式リリース告知後にMac向けのパッケージメンテナ(要するにソースからコンパイルしてアップロードする担当)の立候補者が開発者向けのメーリングリストに 登場したのが昨日。

そもそも公式プロジェクトとしてビルド用のツールとしてcmakeに移行しているのにMac向けの情報はAutotoolsを使う手順のまま。

メインの開発者側としてもWikiを更新しようという動きはあるようなので、しばらく様子見中。

そのうち公式Wikiページのビルド手順も更新されるでしょうし、時間が経てば公式のパッケージが提供されるのだろうと思います。

主な新機能・変更点

  • SVG2およびCSS3サポートの改善
  • (SVG2の)Mesh Gradientsのサポート
  • 新しいパスエフェクト
  • ペンシルツールにおけるインタラクティブなスムージング
  • すべての描画要素のための新しいオブジェクトダイアログ
  • CSS標準との整合性(?)のためにデフォルトの解像度を90 dpiから 96 dpi に変更

“Mesh Gradients"というのはどうやらAdobeのIllustratorに存在するグラデーションメッシュに相当するようです。まるで写真のように本物らしく見えるグラフィックを作成できるとのこと。

デモ動画:Inkscape: Gradient Mesh - YouTube

解像度の変更ですが、以前のバージョンで作成したファイルを開くと確認のダイアログが表示されるようです。紙に印刷する場合など、用途によっては注意が必要かと思います。

リリースの告知文によると、今後の方針としてGUIツールキットをGTK3へ、バージョン管理システムをGitに、コードもC++11 にそれぞれ移行する方針のようです。

詳細なリリースノートは以下。CSS3の縦書きサポートの改善など日本語環境に関連しそうなものもあります。

Release notes/0.92 - Inkscape Wiki

なお、Mac環境固有のバグは修正されていないようです。

何はともあれ

MacPorts経由でインストールすることにします。 通常版ではなく、いわゆるネイティブ版としてビルド。

すでにMacPortsのパッケージ(というかビルド用のレシピ)が更新されているので、この方法でインストールするのが確実です。

XcodeそのほかMacPortsはセットアップ済みであるものとします。

※ 開発版をインストールしている場合はコンフリクトするのでアンインストール。

$ sudo port sync
$ sudo port install  inkscape +quartz

+quartzをつけなければ普通のXQuartzに依存したばいなりになります。

注意点

Sierraでビルドした場合の問題はそのままみたいです。そのままの日本語ロケールだと異常終了するので下記のように起動。

$ LANG=ja_JP inkscape

関連するバグなど

まとめ

そのうち通常版のMac向けパッケージがリリースされると思われるので、しばらく待つほうがベターと思われます。

おしまい。

*1:昨年末からほぼROM状態ですが参加しています

ラズパイにOpenCV 3.2 をインストールする(暫定版)

前回の記事で年内の最後の予定だったけどせっかくなので。

ほぼ作業メモみたいなものです。

環境

準備

旧バージョンのアンインストール(元からインストールされている場合のみ)

OpenCV 3.1 をビルドしたディレクトリ(私の環境では~/work/opencv-3.1.0/build*1)に移動して下記を実行。

$ sudo make uninstall

ついでにmicroSDを圧迫するのでコンパイル時の中間生成物など古いファイルは削除しておく。

作業ディレクトリの作成

適当な場所に作業ディレクトリを作成して移動。

$ mkdir work
$ cd work

依存ライブラリについては過去記事参照。

a244.hateblo.jp

ソースの入手

公式からOpenCV 本体と拡張モジュール(contrib)のソースを入手。

本体の方は"OpenCV for Linux/Mac"というリンクをクリック。拡張モジュールの方は3.2.0の"tar.gz"のリンクから。

wget でダウンロードするなら下記のようにする。

$ wget https://github.com/opencv/opencv/archive/3.2.0.zip
$ wget https://github.com/opencv/opencv_contrib/archive/3.2.0.tar.gz

展開

$ unzip opencv-3.2.0.zip
$ tar zxf opencv_contrib-3.2.0.tar.gz

本体の展開先に移動し、cmake用の出力先ディレクトリを作ってそこに移動。

$ cd opencv-3.2.0/
$ mkdir build_with_contrib
$ cd build_with_contrib

ビルド

最初から拡張モジュール(contrib)ありでビルドします。

CMake

前回と同じ要領で行くと、下記のバグ?に遭遇するのと、C++チュートリアル(Example)のビルドでこけるのでそこを踏まえてcmakeを実行。
またfreetypeというcontribのモジュールも無効化します(後述)。

github.com

TBBは並列化のためのバックエンドの一つ。つまり代替手段があるので無効化しても問題ない。

$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
     -D CMAKE_INSTALL_PREFIX=/usr/local \
     -D INSTALL_PYTHON_EXAMPLES=ON  \
     -D PLANTUML_JAR=/usr/share/java/plantuml.jar  \
     -D ENABLE_NEON=ON \
     -D WITH_TBB=OFF -D BUILD_TBB=OFF  \
     -D WITH_QT=ON -D WITH_OPENGL=OFF \
     -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.2.0/modules \
     -D BUILD_opencv_freetype=OFF \
     -D BUILD_EXAMPLES=OFF ..

前回との変更点は以下のとおり。

  • TBBの無効化("-D WITH_TBB=OFF -D BUILD_TBB=OFF"に変更)
  • 8行目のOPENCV_EXTRA_MODULES_PATHを3.2向けに修正
  • freetypeモジュールをビルドしないように(-D BUILD_opencv_freetype=OFF)
  • サンプルをビルドしないように( -D BUILD_EXAMPLES=OFF )

cmakeの出力で、必要なモジュールが有効になっていることを確かめる。また、freetypeがDisabledのリストに存在することを確認する。

f:id:atuyosi:20161230232146p:plain

以下参考。

CMake configuration for OpenCV 3.2 (with contrib) 2016/12/30 on Raspbian jessie · GitHub

ビルド

f:id:atuyosi:20161230225017j:plain

$ make -j4

空冷ファンありなので発熱は気にせずに4並列でコンパイル

使用しているのはUSB接続の小型ファンです。電源はHDMIディスプレイのUSBハブから確保しています。

タイムリー USBファン [ 40mm角ファンモデル ]  LittleFAN40U

タイムリー USBファン [ 40mm角ファンモデル ] LittleFAN40U

輪っかにしたマスキングテープを両面テープ代わりにして固定しているだけです。小型ファンの宿命として騒音がかなり気になります。

取り付け方法によっては振動も気になりますが、発熱による警告マークは表示されません。

インストー

$ sudo make install

普通にインストールするだけ。

動作確認

C++

過去記事と同じコードをビルドして実行できたらひとまずOKとします。

#include <opencv2/opencv.hpp>
#include <iostream>
#include <fstream>

int main( int argc, char** argv){

    cv::Mat img_rgb, img_gry, img_cny;

    cv::namedWindow( "Example Gray", cv::WINDOW_AUTOSIZE );
    cv::namedWindow( "Example Canny", cv::WINDOW_AUTOSIZE );

    img_rgb = cv::imread( argv[1]);

    cv::cvtColor( img_rgb, img_gry, cv::COLOR_BGR2GRAY);
    cv::imshow( "Example Gray", img_gry );

    cv::Canny( img_gry, img_cny, 10, 100, 3, true );
    cv::imshow( "Example Canny", img_cny );


    cv::waitKey(0);
    return 0;
}

過去記事と同じです。sample.cppというファイル名で保存して下記の手順でビルド。pkg-configを使うのはデフォルトでインストールされているOpenCV 2.4が間違ってリンクされるのを防ぐため。

$ g++ `pkg-config opencv --cflags --libs` sample.cpp

以下のようにグレースケール画像とエッジ抽出の結果が表示されれば問題なし。

f:id:atuyosi:20161230234328j:plain

Python 3

Pythonはモジュールのロードのみ確認。

$ python3
Python 3.4.2 (default, Oct 19 2014, 13:31:11)
[GCC 4.9.1] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'3.2.0'
>>>

遭遇したエラーとその対処

以下、遭遇したエラーメッセージとその対処。基本的にビルド時に無効化しただけですが。

エラーメッセージでググった時にヒットすることを期待しています。読む必要は特になし。

TBB関連

[2017/06/08 追記]

最新の開発版では修正されているようです。そのうちリリースされるであろうOpenCV 3.3 で取り込まれると思われます。

c.f. TBB: fix build on ARM by mshabunin · Pull Request #8844 · opencv/opencv · GitHub

[追記ここまで]

エラーメッセージをメモし忘れた。現象は下記と同じ。

TBB compile error 3.1-dev · Issue #7890 · opencv/opencv · GitHub

前述の通り別の選択肢があるので無効にして回避。  

-D WITH_TBB=OFF -D BUILD_TBB=OFF

バージョン3.1の時はすんなり通ったはずなんだけど。

[2017/01/23 追記]

解決先らしきものが issuesトラッカーに投稿されている。

freetype モジュール

[2017/06/08 追記]

こちらについても最新の開発版では修正されているようです。

[追記ここまで]

ビルド自体は成功するかに見えるが、Python 3でOpenCVモジュールをロードしようとすると下記のエラーに遭遇する。

>>> import cv2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: /usr/local/lib/libopencv_.so.3.2: undefined symbol: hb_shape

必要なライブラリであるfreetype2harfbuzzはインストールされているので問題ないはずだが、実際にはエラーになっている。

関連:OpenCVのcontribにモジュールを追加してPRしてみた - Qiita

便利なモジュールが増えるのはいいことだけど、 使わない立場からすると微妙。環境依存でビルドに失敗するからといって文句言うのは筋違いなんだけど。

Githubの最新版では修正されているかも。

関連:Fix Opencv3.2 freetype module build failed in macOS10.12 #919 by Kumataro · Pull Request #926 · opencv/opencv_contrib · GitHub

macOS環境のビルドエラーの修正だけど、他のバグも一緒にクローズされてる。なのでこの問題も修正されているかもしれない。未検証。

Example ビルドエラー

これも前述のfreetype関連なのか?

[ 84%] Building CXX object samples/cpp/CMakeFiles/cpp-tutorial-pnp_registration.dir/tutorial_code/calib3d/real_time_pose_estimation/src/RobustMatcher.cpp.o
[ 84%] Linking CXX executable ../../bin/cpp-tutorial-pnp_registration
../../lib/libopencv_freetype.so.3.2.0: `hb_buffer_get_glyph_infos' に対する定義されていない参照です
../../lib/libopencv_freetype.so.3.2.0: `hb_font_destroy' に対する定義されていない参照です
../../lib/libopencv_freetype.so.3.2.0: `hb_ft_font_create' に対する定義されていない参照です
../../lib/libopencv_freetype.so.3.2.0: `hb_buffer_add_utf8' に対する定義されていない参照です
../../lib/libopencv_freetype.so.3.2.0: `hb_buffer_destroy' に対する定義されていない参照です
../../lib/libopencv_freetype.so.3.2.0: `hb_shape' に対する定義されていない参照です
../../lib/libopencv_freetype.so.3.2.0: `hb_buffer_guess_segment_properties' に対する定義されていない参照です
../../lib/libopencv_freetype.so.3.2.0: `hb_buffer_create' に対する定義されていない参照です
collect2: error: ld returned 1 exit status
samples/cpp/CMakeFiles/cpp-tutorial-pnp_registration.dir/build.make:345: recipe for target 'bin/cpp-tutorial-pnp_registration' failed
make[2]: *** [bin/cpp-tutorial-pnp_registration] Error 1
CMakeFiles/Makefile2:21767: recipe for target 'samples/cpp/CMakeFiles/cpp-tutorial-pnp_registration.dir/all' failed
make[1]: *** [samples/cpp/CMakeFiles/cpp-tutorial-pnp_registration.dir/all] Error 2

ぶっちゃけなくてもいいので素直にOFFにする。

-D BUILD_EXAMPLES=OFF

まとめ

最低限の確認しかしていませんが、ひとまずビルド成功です。


ではまた。

*1:buildというディレクトリは自分で作成したビルド用のディレクトリで、Makefileが存在する場所

2016年の個人的振り返り

f:id:atuyosi:20170620001438p:plain

結論から言うと滲出性中耳炎という病気に苦しめられた年。

a244.hateblo.jp

現状など

残念ながら強制的なイベントは発生せず。

右耳の聴力低下と右耳で半ば強制的に封印されていたようなものですが。

3ヶ月もあれば治ると言う話だったのに9ヶ月も通院していて「どういうことなの?」という感じです。

一応、少しずつですが聴力は回復しています。まだ耳鳴り自体が完治していないので聴力も戻りきってない状態。

まあ病気療養中であるという大義名分のおかげで助けられている面もあるので、むしろ病気に感謝すべきなのかもしれません。

目標の達成度合いなど

当初の基本方針は問題なし。

基本方針は、頑張らない、見栄を張らない、無理しない、で行こうかな、と。

病気のおかげで結果的に無理が効かなかったので。

1月に立てた目標としては、

  • 作りかけのiOSアプリをリリースする(開発者ライセンスが切れる前に)
  • 形態素解析がらみで何か成果物をつくる
  • WebAPIをつくる(Rails5 でAPI向けの機能が入るみたいなので)
  • (多分)引っ越す

結局実現したのはiOSアプリ作成のみ。残念ながらAppExtentionに対応させようとするついでにリファクタリングしようとして頓挫していますがOKということで。

ブログ記事が2015年の51記事から今年はこの記事を除いて114記事なのでアウトプットは増えています。これは10月にラズパイを購入したのが大きい。

ラズパイとOpenCVに入門したのが今年のハイライトなんじゃないかと思います。

今年の出来事で印象に残っているもの

特に順序に意味はなし。世間のことはとりあえずスルー。

  • 関東遠征(観光)
  • 滲出性中耳炎
  • 寝袋
  • VPSの移行
  • 複合機の故障および廃棄
  • MacBook Air のSSD交換
  • Kindle Unlimited
  • Ubuntu 16.04 LTS
  • Swift 3 リリース
  • ラズパイ購入
  • Mapt 加入
  • まさかの円高

こんなところかな?

精神的な変化

今年は去年以上に内省的だったような気もする。自分がプログラミングそのものが好きなんじゃなくて、コンピューターのもたらすご利益が好きというのが一年間で一番の収穫。

a244.hateblo.jp

もう一点、サービスにしろソフトウェアにしろ、IT系は基本的に「残らない」ってことを再認識したり。

a244.hateblo.jp

去年の11月にマレーシア在住の知人と話をした時はピンとこなかったけど、漠然と海外移住したいと思い出したのも今年。

聴力低下でリスニングがイマイチというのが最大のネック。

その他反省点

  • 先読みしてあれこれ買い込んで結局活用しないパターンが多いような気がする
  • Twitterのタイムラインをだらだら眺めて時間を浪費している
  • 根気強さというか集中力が続かないケース多し
  • 筋トレとかストレッチをサボり気味
  • 未消化TODO項目多すぎ
  • 現実逃避しすぎ

お察しくださいレベル。

来年(2017年)の抱負の候補

基本方針は継続。

1年前との心境の変化としては海外移住したいというのが一番。

来年1月から年齢制限が35歳まで緩和されるそうなので、聴力と資金がどうにかなればオーストラリアのワーホリを目指してみたい。

もう一つ来年やりたいのは翻訳(もちろん技術書)。

プログラミングよりコンピューター関係の本を読んだり知識が増えることに楽しさを感じるタイプなので。

ストレングスファインダーの結果からして悪くはないと思ってる。

audiobook.hatenablog.com

何はともあれ、やりかえの英単語帳の続きをやるのが第一歩か。

技術面の目標

f:id:atuyosi:20161230030238j:plain:w480

  • FPGAに入門する(発注済みなので) → 諦めた(2017/09)
  • 未経験のプログラミング言語に手をだす(C#が有力候補)
  • 何かゲームアプリを作る
  • iOSのMetalを活用した何か
  • ディープラーニング(今更だけど)
  • Coursera | Online Courses From Top Universities. Join for Free
  • Mapt の月額費用の元を取る →解約(2017/01)
  • 購入後放置状態のオライリーの本(英語)を読む
  • 本格的にPython でコードを書く

先週時点でOpenCV 3.2 がリリースされていたり、来年はTesseract の新バージョン4.x も控えてる。過去のパターンだとラズパイ関連は2月末に新製品が発表されるとか。

よく考えるまでもなく、あれもこれもはできないかも。

予算と余力があれば、以下も候補。

そもそも新型のMacBook Pro が優先なので望み薄。

[2017/09 追記]

専用ハードウェア系はラズパイとスマートフォンで手一杯。

というわけで

まったくまとまりがないですが、皆さま良いお年を。

それではまた。

(1)MAX10(2)ライタ(3)DVD付き! FPGA電子工作スーパーキット (トライアルシリーズ)

(1)MAX10(2)ライタ(3)DVD付き! FPGA電子工作スーパーキット (トライアルシリーズ)

Kindle Unlimitedで読んだ本と簡単な書評(2016年12月)

11月は一旦休止していました。Kindle Unlimited シリーズ再開、です。やはりというかなんというか外れ率高め。

a244.hateblo.jp


教養・ビジネス

『ウォーレン・バフェット 成功の名語録』

ウォーレン・バフェット 成功の名語録 (PHPビジネス新書)

ウォーレン・バフェット 成功の名語録 (PHPビジネス新書)

名語録としてまとまっているか、ちょっと疑問だけど含蓄に富む。

一番いいと思ったのは、就職に関するもの。

「最も尊敬している人のところでで働きなさい」

今の日本の就活なんて……。

次点としては

ねたみを避ける最良の方法は、自分が成功に値する人間になることだ

『出る杭は打たれる』という(ことわざ)に対する対処法としてもいいのでは。

一度でいいからウォーレン・バフェット氏と直接会って話をしてみたいですね。

『描くだけで毎日がハッピーになる ふだん使いのマインドマップ』

描くだけで毎日がハッピーになる ふだん使いのマインドマップ

描くだけで毎日がハッピーになる ふだん使いのマインドマップ

リフロー形式。マインドマップ誕生の経緯とか。

あとは具体的なマインドマップの例を紹介しながら蘊蓄を語るような本。

マインドマップを肴に(?)、書いた本人または紹介者のコメントに著者がコメントする、というパターンが続く。最後のパートがマインドマップの書き方の解説。 章構成としてこれでいいのかは疑問。

他人がどんなマインドマップを書いているのか興味がある人向け。

そもそもマインドマップ自体を知らない人はこの本よりもトニー・ブザン氏の本を読むといいと思う。

難点は画像(マインドマップ)が小さいので各ブランチの文字が小さいところ。全体のイメージがつかめれば問題はないけどちょっと残念。

この本に限らずKindle版に良くあることだけど。

『Think Simple ―アップルを生みだす熱狂的哲学』

Think Simple ―アップルを生みだす熱狂的哲学

Think Simple ―アップルを生みだす熱狂的哲学

Apple のコピーライター、ケン・シーガル氏によるAppleのマーケティングに関する本。故・スティーブ・ジョブズ氏とのエピソード多数。

ジョブズ氏が存命だった時の会議のやり方など、あまり一般に知られていないエピソードが多いのではないかと思う。

いわゆる大企業病についての批判など、参考になる部分は多い。平社員の立場ではどうにもならないよなあ、というのが正直な感想。

『黄小娥の易入門』

黄小娥の易入門

黄小娥の易入門

非科学的だけど、わりと面白い。血液型性格診断みたいに言われてみればそうかもね、という感じ。

昭和30年代に一世を風靡した本の新装版らしい。

縦書きリフロー形式。

最初に易の概要の説明をしたあと硬貨6枚で簡単に占うやり方を解説している。後半はその簡易式の易の結果の解釈が延々と続く。

サイコロを複数転がすのと大差ないような気もするけど、好奇心を満たすには十分。

『プログラミングで学ぶ20代までに身につけたい論理的思考: AIに負けない考え方』

フリーランスのプログラマによるちょっとしたエッセイ。分量が少ないのですぐ読める。

ただし、定価で買うのはオススメしない。サブタイトルの人工知能云々から期待する内容ではなかったです。

おおむね妥当なことを書いてあるように思う。Kindleよりnoteで販売した方が良かったのでは。

印象的な箇所を引用しておく。

言い方を換えれば、AIは人間を補助するための道具に過ぎないのです。(L. 34より)

正論。人工知能(AI)脅威論はこの「人間のための道具」ってところをスルーしているように思う。

今後AIが進化し、人間に代わってできることが増えれば、人間はより人間らしい活動に専念できるようになっていきます。それは同時に深く考えることのない単純な労働は、AIに置き換えられていくことを意味しています。(L. 37より)

前半に目を向けるのが人工知能に対して楽観的な立場。後半が悲観的な立場。

この本の著者の主張は、しっかりと意思を持つ、論理的な思考力を身につける、の2点。前者については人工知能と無関係に当たり前だと思うけど。

いくら人工知能による自動運転が実現しても目的地を決めるのは人間ですよねって話。

本文でプログラミング教育の義務化の目的に疑問を提起しているけど、そもそも学校では個々人の「人生の目的」とか「どんな人生をおくりたいか」について考えさせない。

そんなことしたらみんな金持ちになりたがるし誰もサラリーマンやりたいとは思わないだろう。

学校教育の一環で「将来の夢」ではなく「どんな人生をおくりたいか」を考えさせるのはいいかもしれないと思うけど。

プログラマーにありがちな論理的思考賛美エッセイになってる。

『日本でいちばん社員満足度が高い会社の非常識な働き方』

日本でいちばん社員満足度が高い会社の非常識な働き方

日本でいちばん社員満足度が高い会社の非常識な働き方

社長自身による自画自賛だらけ。経営者の書いた本は大体そうだけど。


人違いでなければこの会社かな?  

「超選択と超集中」 – 株式会社 EC studio はChatWork株式会社へ社名を変更します! - EC studio 社長ブログ

ECスタジオという名称はESET なんたらというウィルス対策ソフトの販売代理店かなんかだっだような気がするのだけど。


大会系(格闘技経験者)ということなので嫌な感じはするけど、内容は面白い。

ちゃんと理解しているのか疑問だけど、Googleのサービスを会社全体で活用したり、ある程度高性能なスペックのPCを支給している点は評価する。

社長があまりITに強くないことが斬新な発想につながっているのかもしれない。

2010年紙媒体発行ということなのでかなり実態とは異なるのではないかと思う。

『羽生善治×川上量生「羽生さんはコンピュータに勝てますか?」完全版』

羽生善治×川上量生「羽生さんはコンピュータに勝てますか?」完全版 【文春e-Books】

羽生善治×川上量生「羽生さんはコンピュータに勝てますか?」完全版 【文春e-Books】

羽生さんって頭いいなあと再確認した次第。どうも結論が曖昧な印象。

人間には人間ならではの、コンピューターにはコンピューターの良さがある、みたいな結論?

何と言えばいいのか、示唆に富む?  

英語

『自宅でできる翻訳の仕事』

自宅でできる翻訳の仕事 (OnDeck Books(NextPublishing))

自宅でできる翻訳の仕事 (OnDeck Books(NextPublishing))

翻訳関係のツールの使い方の説明とか、仕事の探し方とか。とりあえずこの著者には依頼したくないと思った。

著者のプロフィールを見ると慶應大学法学部卒で弁理士と記載さ入れているので、普通の人がそのまま鵜呑みにできるとは思えず。

Next Publishing ということでプロの編集が入っている割には章構成に工夫がないというか、章と章のつながりが悪いと思った。

技術系

『よくわかるディープラーニングの仕組み』

よくわかるディープラーニングの仕組み

よくわかるディープラーニングの仕組み

比較的文章量が少ないので一読するだけならさほど時間はかからないが、わかりやすいわけではない。どことなく「わかりやすさ重視」でざっくりとした説明になっているような感じがする。

なんとなく理解できたような気分にはなれる(というか、そんな気分になった)。

6章の『ニューラルネットワークの歴史』、7章の『ディープラーニングの開発環境』は概要を知りたい場合には有益。

以下、構成と組版についての不満。

  • 図の説明(特に記号の添え字)が不十分
  • 章見出しの下に余白がない
  • それぞれの章の冒頭に概要を書いて欲しい

LaTeXで組んだドキュメントに慣れている人間からすると組版に不満。

美術系

『ゴッホ画集: 改訂版 (世界の名画シリーズ)』

ゴッホ画集: 改訂版 (世界の名画シリーズ)

ゴッホ画集: 改訂版 (世界の名画シリーズ)

日本人の大好きなゴッホです。暇な時に眺めるといい感じ。

だいたい200ページ(目次を除く)で200点ぐらいの絵が収録されてる。 最初に各画像のサムネイルのページがあり、目次からそれぞれの絵のページに遷移できるようになっている。この点は非常に良い。

小説・そのほか

『【合本版1-10巻】魔術士オーフェンはぐれ旅 新装版』

【合本版1-10巻】魔術士オーフェンはぐれ旅 新装版

【合本版1-10巻】魔術士オーフェンはぐれ旅 新装版

199x年代の代表的ラノベ。なんだかんだで一通り読んでしまった。ネットでタダで読める異世界転生系より断然お勧め。

挿絵のイラストが時代を感じさせる。

ネットの異世界転生系の小説がダメだというわけではありませんが、読んで損はないと思います。量が多いので一気に読むのはしんどいのが難点かな。

雑誌

『日経Linux(リナックス) 2016年 11月号』

日経Linux(リナックス) 2016年 11月号 [雑誌]

日経Linux(リナックス) 2016年 11月号 [雑誌]

ラズパイマガジンの特別編が付録としてくっついてる。ちょっとだけ得した気分。

『Mr. PC 12月号』

Mr.PC (ミスターピーシー) 2016年 12月号 [雑誌]

Mr.PC (ミスターピーシー) 2016年 12月号 [雑誌]

どっちかというとWindowsユーザー向けの雑誌。まあ一年間のPC関連の話題をざっくり振り返る分にはちょうどいい感じの内容。

紙媒体の方は付録DVDが付いているらしく、電子版の方は過去記事3年分など付録をダウンロードするためURLとパスワードが書いてある。

Kindle Unlimited 経由の読者がダウンロードしていいのかは不明。

まとめ

ちょっと今月は微妙だったかな。

読みかけのタイトルが何冊かあるのでそれを読み切るまでは契約していると思いますが、その先はちょっと微妙です。


それでは。

ラズパイ公式カメラモジュール その2

前回の続きです。

部品を購入したところで取り付けないと始まりません。

a244.hateblo.jp

前提条件と準備

前提条件は以下の通り。

  • Camera Module V2.1
  • Raspberry Pi 3 model B
  • Raspbian Jessie

過去記事で使っている環境にカメラが追加されただけです。

注意点など

  • Raspbian をアップデートした状態に
  • GL Driver は無効化*1しておく

以下のコマンドを実行してOSをアップデート。

$ sudo apt update
$ sudo apt upgrade

念の為、ファームウェアもアップデートしておく。

$ sudo rpi-update

正常終了したら再起動。

以下、参考。

$ uname -a
Linux raspberrypi 4.4.38-v7+ #938 SMP Thu Dec 15 15:22:21 GMT 2016 armv7l GNU/Linux

接続と設定

カメラモジュールは静電気に弱いらしいので、周囲の金属に触れるなどして静電気を逃がしてから作業する*2

  1. ラズパイの電源を切り、しばらく待っってから*3、電源ケーブルを取り外しておく
  2. カメラ接続用のコネクタ(HDMIポートの隣)の両端の黒いツメを垂直方向に引き上げる
  3. 向きに注意しつつ、コネクタにケーブルを差し込む。青い文字の印刷されている側がUSBポート側になるように
  4. しっかり押し込んだ状態で、コネクタの黒いツメを押し込んで固定する

f:id:atuyosi:20161228025305j:plain:w320
接続後の状態

f:id:atuyosi:20161228025244j:plain:w320
反対側から

通電状態で作業しても問題ないのかもしれませんが、気軽に電源の入った状態で抜き差しできるUSBが特別なのであって、本来周辺機器は電源オフで取り外すべきかと思います。

ソフトウェア側の設定

GUI環境の場合

f:id:atuyosi:20161228031709p:plain:w320

  1. 画面左上端のメインメニューから「設定」「Raspberry Piの設定」をクリックして設定画面へ
  2. 「インターフェイス」タブの「カメラ:」の有効というラジオボタンをクリック
  3. 「OK」をクリックすると再起動を促してくるので素直に再起動

f:id:atuyosi:20161228031804p:plain:w320

CLI(CUI)環境

sudo rasps-configから設定。"5. Interfacing Options"から"P1 Camera"と順に進んで行けばOK。

f:id:atuyosi:20161229000245p:plain:w320
特に説明は不要なはず

補足:エラーの例など

ケーブルがしっかり刺さっていない(もしくはRaspbian側でカメラ用のインターフェイスが有効になっていない)状態でカメラにアクセスすると下記のようなエラーが表示される。

$ raspistill  -w 1920 -h 1080 -o try.jpg
mmal: Cannot read cameara info, keeping the defaults for OV5647
mmal: mmal_vc_component_create: failed to create component 'vc.ril.camera' (1:ENOMEM)
mmal: mmal_component_create_core: could not create component 'vc.ril.camera' (1)
mmal: Failed to create camera component
mmal: main: Failed to create camera component
mmal: Camera is not detected. Please check carefully the camera module is installed correctly

ピント調整時にケーブルを引っ張ってしまったせいで遭遇しました。

なお、カメラモジュール自体が故障している場合のエラーは不明です*4

フォーカス調整

マクロよりの条件で撮影したい場合のみ。監視カメラなどの用途であれば不用意に弄らない方がベターだと思います。もちろん自己責任で。

f:id:atuyosi:20161228025114j:plain:w320
調整用の治具

付属の治具*5の裏側をよく見ると、微妙に凹みがあるのでその部分をカメラの先端部にはめ込む*6

f:id:atuyosi:20161228025136j:plain:w320

初回のみ強めに押し付けた状態で軽く時計回りにひねってやると固定用の糊が外れるのか、すんなり回転するようになります*7

初期状態では無限遠方にピントが合うように設定されているため、時計方向にはほとんど回らないはずです。

近方にピントを合わせたいときは反時計回りに、遠方にピントを合わせたいときは時計回りに。反時計回りに回しすぎると完全なピンボケ状態になる。

時計回りに締め込んで行くとほぼ出荷時の状態に戻る。

ピント調整は接続したままの状態で問題ないです。用途に応じて撮影結果を確認しながら調整(静電気対策もお忘れなく)。

例えば以下のようにコマンドにraspistill(後述)の-tオプションに"0"ミリ秒を指定するとCtrl+Cを入力するまでプレビュー画像を撮影し続けるのでかなり楽(raspvidでも可)。

$ raspistill -t 0

raspistillraspvidでプレビュー表示の見え方が微妙に違うので目的にあった方のコマンドで確認しながら調整する。

専用コマンドで撮影

公式ドキュメントによると、カメラモジュール専用のコマンドとして、raspistillraspividraspistillyuvの3つが紹介されている。

しかしながら現在のところ、raspistillyuvではなくraspiyuv'に名称が変更されていたり、raspividyuv`が追加されているので結局全部で4つとなっている。

  • raspistill : 静止画用の画像データ取得コマンド
  • raspiyuv : YUV形式でデータ画像を取得するコマンド
  • raspivid : H264形式で動画を撮影するコマンド
  • raspividyuv : YUV420形式で動画を撮影するコマンド

それぞれオプションなし、もしくは-?オプション付きで実行するとオプション一覧が表示される。なおこれらのコマンドはlibraspberrypi-binというパッケージに含まれており、基本的に最初からインストールされている。

基本的なオプションは下記のページに一通り記載されてる。

Interface(インターフェース) 2016年09月号にカメラモジュール自体と、付属コマンドの解説が載っているのでそちらも参考に。

Interface(インターフェース) 2016年09月号

静止画の撮影

静止画を撮影するには-oオプションでファイル名を指定したうえで実行する。もうひとつ重要なのは画像を回転させるための-rotオプション。

また、-hで撮影する画像の高さ、-wで撮影する画像の幅を指定する。省略した場合は最大解像度(3280x2464)。

最大解像度未満の値を指定すると、不要な部分を切り捨てるケースと指定された解像度に縮小するケースがある。結果として指定する高さと幅の比率が画角に影響する。

$ raspistill  -w 1280 -h 800 -o test.jpg

コマンドを実行するとプレビューが表示された後、画像が保存される。プレビュー画像の表示位置と解像度は-pオプションで変更可能。

デフォルトではコマンドが実行されてから5000ミリ秒(つまり5秒)ほど待機してから撮影される。これは-tオプションで変更可能。 

以下は2秒後に撮影する例:

$ raspistill -t 2000 -o image.jpg

png形式で保存する(可逆圧縮):

$ raspistill  -o image.png -e png

-eで保存する形式を指定しない限りファイル名の拡張子によらずJPEG形式で保存される((jpg, bmp, gif, png)の4種が指定できる)。

他にもカメラの設定を変更するオプションと、夜景や花火などの特定の撮影シチュエーション向けのモード指定オプション、撮影した画像にエフェクトをかけるオプション*8がある。

撮影してみた画像

そのままでは固定できないので、Amazonで購入したクリップで挟んで固定。

f:id:atuyosi:20161229013948j:plain:w320
なんとも微妙な絵面。

下記のように画像サイズを指定する。

$ raspistill  -w 1280 -h 800 -o testimage.jpg

撮影した画像は以下のとおり(フォーカス変更前)。

f:id:atuyosi:20161229013813j:plain:w320
普通にいい感じに見える。


フォーカスをいじった後の画像。

f:id:atuyosi:20161229014426j:plain:w320 ちょっとマクロよりに調整しずぎでピントが甘い。


ちょうどいい被写体がないので微妙ですが、マクロの例(だいたい8cmぐらい)。

f:id:atuyosi:20161229021437j:plain:w320
その1

f:id:atuyosi:20161229021502j:plain:w320
その2

Interfaceの記事の通り、5cmぐらいまではいけるのは確認済み。マクロよりにすると焦点の合う範囲が狭くなるのも記事の通り。

動画は面倒なので省略。

おわりに

静電気に弱いらしいのと、オートフォーカスがない点を除けば非常にいい感じだという印象です。

気が向いたらPytonのPiCameraモジュールを使うサンプルにトライするつもりです。 トランジスタ技術なりInterfaceの記事を参考に遊んでみたいとは思っています。


ひとまずこんな感じです。

その他・関連リンク

これ1冊でできる! ラズベリー・パイ 超入門 改訂第4版 Raspberry Pi 1+/2/3/Zero/Zero W対応

これ1冊でできる! ラズベリー・パイ 超入門 改訂第4版 Raspberry Pi 1+/2/3/Zero/Zero W対応

*1:初期状態では無効なので自分で有効にしていないなら何もしなくてよい

*2:気にしすぎ?

*3:少なくとも20秒、ランプが点滅しなくなるまで

*4:率直に申し上げてそのような状況には陥りたくない

*5:購入時期によっては付属してないかもしれない。「Amazon.co.jpが販売・発送」しているものは問題なし。11月中旬にKSYに問い合わせたところ、付属しているとの回答だったのでKSYも大丈夫なはず。

*6:押し当てた状態で左右にひねるとはまり込む

*7:誤ってこれ以上回転しない方向に破損しないように意図的に緩めた状態で固定しているのだと思う

*8:あくまでもGPU側の機能

広告