読者です 読者をやめる 読者になる 読者になる

karaage. [からあげ]

からあげに勝手にレモンをかけたらエンドレスレイン(紅)

100円ショップで始める水耕栽培(植え替え編)

日記

f:id:karaage:20160723163556j:plain:w640

育苗していたレタスの植え替えをします

 レタスの水耕栽培にチャレンジしています。詳細は以下記事参照下さい。

 バーミキュライトで苗を育てていたのですが、だいぶ育ってきたというか育たなくなってきたので、いよいよ植え替え(というのかな?)て、溶液栽培に切り替えようと思います。

f:id:karaage:20160723145540j:plain:w640  生育の様子

 以下は作り方です。写真多めなので、興味ある方のみどうぞ

続きを読む

python+OpenCVで顔認識@Mac/Linux(Raspberry Pi)

電波 カメラ・写真

f:id:karaage:20160718230400j:plain:w640

python + OpenCVで30行で顔認識

 今更ながらpython + OpenCVで顔認識(正確には顔検出)をやってみたのでメモ。以下のように30行もあれば顔検出ができてしまいます。汎用性とか気にしなければ20行でもいけそうですね。

# -*- coding: utf-8 -*-
import cv2
import sys
cascade_path = "./haarcascade_frontalface_alt.xml"

color = (255, 255, 255) # color of rectangle for face detection

def face_detect(file):
    image = cv2.imread(file)
    image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    cascade = cv2.CascadeClassifier(cascade_path)
    facerect = cascade.detectMultiScale(image_gray, scaleFactor=1.1, minNeighbors=1, minSize=(1, 1))

    print "face rectangle"
    print facerect

    if len(facerect) > 0:
        for rect in facerect:
            cv2.rectangle(image, tuple(rect[0:2]),tuple(rect[0:2]+rect[2:4]), color, thickness=2)

    return image

if __name__ == '__main__':
    param = sys.argv
    if (len(param) != 2):
        print ("Usage: $ python " + param[0] + " sample.jpg")
        quit()  

    output_img = face_detect(param[1])
    cv2.imwrite('facedetect_' + param[1], output_img)

 pythonの設定は以下参照下さい。

 haarcascade_frontalface_alt.xmlというファイルが必要なので注意。OpenCVをインストールすれば自動的に一緒に入ってくるはずなので、以下のコマンドで探して、ファイルと同じ場所にコピーして下さい。

$ sudo find / -name haarcascade_frontalface_alt.xml

 顔認識に必要な画像は、以下の標準画像とかから探すとよいかもしれません。 標準画像

 有名なLennaさんLenna.jpgを使用してみましょう。以下コマンドで顔認識できます。

$ python face_detect.py Lenna.jpg

 実行結果は以下のとおり f:id:karaage:20151124224426j:plain:w640

f:id:karaage:20151124224443j:plain:w640

 それでは、恒例のロンスタさん(id:lonestartx)提供のフリー素材でも試してみましょう。 f:id:karaage:20160709132426j:plain:w640

f:id:karaage:20160718230400j:plain:w640

 よい感じですね。

顔認識の仕組み

 参考リンク等によると、OpenCVの顔認識はHarrlike + Adaboostらしいです。一般的に物体認識する際は、特徴量を抽出して、学習器で判定するという流れになるのですが、Harrlikeが特徴量抽出の仕組みで、Adaboostが学習器ですね。仕組みは、以下の中部大学の資料が分かりやすいと思いました。 中部大学の資料

 ちなみに、今回のように顔の位置を特定するのは専門的には、顔認識ではなくて顔検出が正しいらしいです。顔から誰かを判定する場合が顔認識とのこと。へぇー。

 今回のファイル以下のGitHubのリポジトリにもアップロードしました。

 PCにカメラがあればface_detection_camera.pyを使って、以下コマンド実行すればリアルタイムで顔検出を楽しむことが可能です。

$ python face_detection_camera.py

参考リンク

中部大学の資料

python+OpenCVで顔認識をやってみる - Qiita

OpenCVで遊ぼう!

Momma's Wiki: OpenCV - インテルがオープンソース化し,Willow Garage→itseezに引...

Pythonで顔検出まとめ - Qiita

子供の写真を家族・ジジババと共有する方法

Apple関係 カメラ・写真

子供の写真の共有方法

 娘の写真を夫婦に加えて、ジジババ(自分と妻の親のことね)と共有する必要性は高いと思います(望む、望まないに関わらず)。今日はその方法についていくつかご紹介いたします。

iCloud共有アルバム

 夫婦でMacやiPhone使っていれば、これが一番簡単です、共有アルバムを以下の通り作るだけ。

 iCloudで共有できちゃいます。MacやiPhone持ってないジジババはどうするかというと、上記の記事にも書かれているのですが、「共有ストリーム」リストからストリームをタップして、「ユーザ」をタップし「公開Webサイト」をオンにするだけです。

 すると、以下のようにWebアドレスが出てくるので、このアドレスにアクセスすれば普通にPCからアクセスできます。 f:id:karaage:20160723010346p:plain:w480

 パスワード無しでアクセスできてしまうので、不特定多数の人にアドレスを教えないように注意しましょう。写真にコメントつけることもできます。

みてね

 以下の記事が詳しいです。

 mixiのアプリみたいです。mixiって懐かしい響きですね…。無料で使えるし、夫婦とジジババで公開する写真の範囲を変更したりできるのがよいところでしょうか。こちらも写真にコメントつけること可能です。

まごちゃんねる

 専用ハードで見れちゃうこんなものもあります。

 ジジ・ババがパソコンを持っていない、使えないような人が対象のようです。ちょっとお高いですが、テレビの大画面で観れるのはよいかもしれませんね。

まとめ

 簡単にまとめると以下のような感じでしょうか。

項目 iCloud みてね まごちゃんねる
価格 無料 無料 ハード購入+サービス料必要
容量 iCloudで使える容量 無制限  無制限?
手軽さ めちゃ手軽 普通 導入はハードル高い
制約 MacかiPhone必要 アプリが入るスマホが必要 専用ハード必要
コメント できる できる 不明
アクセス制限 できない できる 不明

 我が家はiCloudの共有アルバムを使っています。最初は「みてね」を使うとよいかなと思って妻に話したら、既にiCloudの共有アルバムを使いこなしてジジ・ババとも共有していたというね。MacやiPhone使っているなら、OSとの連携もよいのでiCloudの共有アルバムはおすすめかなと思います。

 Androidの人や、アクセス制限ができない点などが気になる方は「みてね」を使うのがよいのかなと思います。まごちゃんねるは、専用ハードでほんとパソコン全く使えないようなジジ・ババのためのサービスなのでちょっと特殊かなと思います。こういうのもありますよという紹介です。

 いずれにせよ、こういうサービスで手軽に写真や動画を共有すると夫婦間やジジ・ババ間のコミュニケーションがはかどりますので、もし何もやってない方は試してみるとよいかなと思います。

Open JTalkで初音ミクの声でおしゃべりさせる@Mac/Linux/Raspberry Pi

電波

f:id:karaage:20160704223328j:plain:w640

Raspberry Piでミクさんの声を使いたい!

 以前Raspberry Piで音声認識や音声合成をやっていました。

 そのときは、手軽に使えるのと、ゆっくりっぽい声が好きだったので音声合成にはAquestalk Piを使っていました。

 ただ、もうちょいかわいい声で喋って欲しいなと思って調べていたら、なんとOpen JTalkというフリーの音声合成ソフトで初音ミクの音声モデルが使えるというではないですか!Aquestalk Piはライセンス微妙にいやらしいし、これは使うっきゃないと思って早速トライしてみました。

 結構参考サイトたくさんあるし、すぐできるだろうと思っていたら、例によって色々微妙にハマって思ったより大変でしたのですが、Raspberry PiだけでなくLinuxやMacでもミクさんの声でしゃべってもらうことができるという思わぬ(?)副作用もありました。作業手順残しておくので、興味ある方は参考にしてください。

続きを読む

自分の人生を変えた藤子・F・不二雄先生のSF(少し不思議な物語)

本・漫画

藤子・F・不二雄先生の少年SF短編

 なんと、誕生日に欲しいものリストに入れていた藤子・F・不二雄大全集の少年SF短編が届きました!!

誕生日に欲しいものリストの本がきたー!有難うございます!!

 ありがたやありがたや。買おう買おうと思って、ずっと買えてなかったんですよね。

 結構知っている話多いかなと思っていたのですが、全部未読(もしくは覚えていない)作品だったので、非常にうれしかったです。どれも(多分)初期の作品で、ちょっとラストが唐突気味だったり、ドラえもんで似たような話があったりしますが、そういうところも引っくるめて非常に楽しめました。印象的だった作品に関して、簡単に感想を書きます。

流血鬼

 世界中の人が吸血鬼になってといった、今でいうゾンビパニックもの。自分は半村良さんの「石の血脈」を思い出したんだけど、両方とも元ネタは「アイ・アム・レジェンド」らしいです。後書き読んでびっくりしたけど、「アイ・アム・レジェンド」原作1954年なんですね。映画も原作も見たことないので一度見てみたいかな。

石の血脈 (角川文庫)

石の血脈 (角川文庫)

アイ・アム・レジェンド (ハヤカワ文庫NV)

アイ・アム・レジェンド (ハヤカワ文庫NV)

宇宙船製造法

 これは本格的宇宙SF。漂流もので元ネタはジュール・ヴェルヌの「十五少年漂流記」らしいけど、どちらかというとゴールディングの「蝿の王」に近いかなと思いました。出来杉キャラとジャイアンキャラの変化っぷりが見どころです。

十五少年漂流記 (新潮文庫)

十五少年漂流記 (新潮文庫)

蠅の王 (新潮文庫)

蠅の王 (新潮文庫)

自分の原点は「ドラえもん」

 そして、やっぱり藤子・F・不二雄先生といえば「ドラえもん」ですね。

ドラえもん (1) (てんとう虫コミックス)

ドラえもん (1) (てんとう虫コミックス)

 ドラえもんは、子供のころ読んでも大人になって読んでも違う視点で楽しめる素晴らしい作品だと思います。何度でも読んで欲しい作品です。今となって古典に近い作品になってしましたが、結構時代を超えて通じる普遍的な要素も多いと思うので、子供にも興味を持ってくれたら読んで欲しいなと思うので、また藤子・F・不二雄作品揃えていきたいなと思いました(今は家にほとんど漫画ありません)。

 自分に関していうと、大袈裟かもしれませんが「ドラえもん」が人生を変えました(狂わせたともいう)。多分、「ドラえもん」読んでなかったら今の仕事してなかったんじゃないかなと思います。どんな仕事でしょうね(笑)。ありがとう「ドラえもん」

まとめ

 藤子先生は、自身のSFを「サイエンス フィクション」でなく「少し不思議な物語」と読んでいたようです。自分自身の人生の物語にも「少し不思議」のいろどりを添えるためにも、藤子・F・不二雄大全のSF短編シリーズ全巻そろえていきたいなと思います!

藤子・F・不二雄大全集 少年SF短編 1

藤子・F・不二雄大全集 少年SF短編 1

藤子・F・不二雄大全集 少年SF短編 (2)

藤子・F・不二雄大全集 少年SF短編 (2)

藤子・F・不二雄大全集 少年SF短編 3

藤子・F・不二雄大全集 少年SF短編 3

藤子・F・不二雄大全集 SF・異色短編 1

藤子・F・不二雄大全集 SF・異色短編 1

SF・異色短編 2 (藤子・F・不二雄大全集)

SF・異色短編 2 (藤子・F・不二雄大全集)

SF・異色短編 3 (藤子・F・不二雄大全集)

SF・異色短編 3 (藤子・F・不二雄大全集)

SF・異色短編 4 (藤子・F・不二雄大全集)

SF・異色短編 4 (藤子・F・不二雄大全集)

Raspberry Piのカメラモジュール V1とV2を比較してみました

電波 カメラ・写真

Raspberry Pi カメラモジュール V2

 もう2ヶ月くらい前になりますが、Raspberry Pi Camera Module v2が発売されました。V1のカメラのセンサOmniVision OV5647のディスコンを受けてSony製センサのIMX219に変更となっています。画素数は500万画素から800万画素に向上していますし、ソニー製センサということで、性能向上も期待できそうというわけで、一度比較してみることにしました。

Raspberry Pi カメラモジュール V1 V2比較

外観

 まずは外観から。V1の方はRev 1.3 V2の方はV2.1のシルクが印字されているので確実に見分けられますね。パッと見もレンズと基板の接続部がV1は黄色なのに対してV2は黒いです。ちなみにこの接続部がカメラの上側になります。 f:id:karaage:20160704223148j:plain:w640

撮影比較

 撮影対象としてミクさんを使いました。以下のような形で同じ箇所から撮影して比較しています。

f:id:karaage:20160704230151j:plain:w640  ミクさんかわいい

 今回はRaspistillというRaspbian標準のコマンドと、自作のpythonスクリプトの両方で試してみました。Raspistillのコマンドは以下。

$ raspistill -o test.jpg

 pythonスクリプトのソースコードshutter.pyは以下。

# -*- coding: utf-8 -*-
import subprocess
import picamera
import os
from time import sleep

shutter_numb = 0
photo_dir = os.path.expanduser('~/photo_data')

def cameraLoad():
    global shutter_numb
    filename = os.path.join(photo_dir, 'camera.set')
    try:
        fp = open(filename)
        tmp_shutter_numb = fp.readlines()
        tmp2_shutter_numb = tmp_shutter_numb[0].rstrip()
        shutter_numb = int(tmp2_shutter_numb)
        fp.close()
    except IOError:
        print 'no camera.set data, make set files'

def cameraSave():
    filename = os.path.join(photo_dir, 'camera.set')
    fp = open(filename, 'w')
    fp.write(str(shutter_numb))
    fp.close()

def shutter():
    global shutter_numb
    shutter_numb +=1

    filename = os.path.join(photo_dir, str("{0:06d}".format(shutter_numb)) + '.jpg')
    photofile = open(filename, 'wb')
    print(photofile)

    with picamera.PiCamera() as camera:
        camera.resolution = (2592,1944)
        camera.start_preview()
        sleep(1.000)
        camera.capture(photofile)

    photofile.close()

if __name__ == '__main__':
    cameraLoad()
    shutter()
    cameraSave()

 以下でファイルを保存するディレクトリ作成して

$ mkdir ~/photo_data

 以下コマンドで撮影。

$ python shutter.py
カメラモジュール V1

f:id:karaage:20160704223016j:plain:w640  Raspistill

f:id:karaage:20160704223328j:plain:w640  pythonスクリプト

 ふむ大体同じ感じ

カメラモジュール V2

f:id:karaage:20160704223649j:plain:w640  Raspistill

f:id:karaage:20160704223722j:plain:w640  pythonスクリプト

 V1より広角気味ですね。そして、pythonスクリプトで撮影した方はなんか色が変です。ホワイトバランス?念のためホワイトバランス安定期間(Preview後のスリープ時間)を5sくらいまで長くしたり、解像度とV2カメラに合わせたりしてみたのですが効果無しでした。何故…

画角確認

 V1とV2で画角どの程度違うのか確認するため、OM-D E-M5とM.ZUIKO DIGITAL ED 9-18mm F4.0-5.6で同じ箇所から撮影して、同じ画角になる焦点距離を探ってみました。

f:id:karaage:20160704230534j:plain:w640  15mmでV1の水平方向の画角に近くなりました

f:id:karaage:20160704230602j:plain:w640  12mmでV2の水平方向の画角に近くなりました

 OM-D E-M5はマイクロフォーサーズセンサなので、35mm換算だと焦点距離は2倍なのでV1は約30mm、V2は約24mmといったところでしょうか。V2の方がかなり広角ですね。ちなみにRaspberry Cameraモジュールのセンササイズは1/4インチらしいので3.67mmx2.74で35mmフルサイズセンサの約1/10。ExifデータによるとV1の焦点距離が3.6mm, V2が3mmのようなので、数字上は35mm換算だとV1は36mmでV2が30mm。V2の方が広角なのは同じですが、結構数字がOM-D E-M5での測定結果とずれますね。測定の仕方が悪いのか、何かデータに誤りがあるのか…

 センササイズと画角の関係に関して、詳しく知りたい人は下記参照下さい。

まとめ

 気になっていたRaspberry PiカメラモジュールのV1とV2の比較しました。ただ、V2だとraspistillとpythonのスクリプトで出てくる絵が全然違ったり、画角が計算と合わなかったりと色々謎が深まるばかりでした。

 そして、以前V2のカメラだと何故か画像が反転してしまうという謎の現象に悩んでいたのですが、今回は再現しませんでした。どうも、どこかのソフトアップデートのタイミングで問題解消していたようです。もし画像反転している人は、sudo apt-get upgradesudo rpi-upgradeあたりを実行すればなおるのじゃないかなと思います。

参考リンク

Raspberry Pi Camera Module V2.1がリリース | Japanese Raspberry Pi Users Group

raspistill - Raspberry Pi Documentation

Raspberry Pi メモ (23) - カメラモジュールの使い方

IMX219仕様

NATURA CLASSICA + AGFA VISTA PLUS 200 フィルム写真

カメラ・写真

f:id:karaage:20160620230332j:plain:w640

NATURA CLASSICA + AGFA VISTA PLUS 200

 久しぶりのフィルム写真です。結構前に撮りきっていたのですが、現像に出すタイミングを完全に逸してしまっていました。

フィルム写真

f:id:karaage:20160620230336j:plain:w640

f:id:karaage:20160620230332j:plain:w640

f:id:karaage:20160620230330j:plain:w640

f:id:karaage:20160620230329j:plain:w640

f:id:karaage:20160620230327j:plain:w640

 他の写真は下記のフィルム写真ブログに順次投稿していきます。

感想

 今回の仕上がりはわりと普通でした。そういえばSHUTTER HOLICさんのときは仕上がり「こってり」とか色々お願いしていたのを思い出しました。SHUTTER HOLICさんが閉店してからは、近くのイオンの写真屋さんで現像してもらっているのですが、次は思い切ってお願いしてみようかな。そもそもイオンのチェーン店で仕上がり「こってり」とかお願いしてやってくれるのかなぁ。気が小さいので変な人と思われないか不安です。