• MacOSX SierraでOpenCV3がビルドできない場合の3つの対処法

    久々にOpenCVをビルドしようとしたら3つ引っかかりうまく行かなかったので、対処法を書いておきます。

    元々の参考になるOpenCVが出してるMacでOpenCV3系をビルドする方法はこれです。

    ただ、残念ながら今はこれではうまくいかないです。
    Cmakeでconfigureとgenerateしたまではいいけど、makeでコケるようになりました。

    問題1) fatal error: ‘sys/types.h’ file not found

    このようなエラーが出ます

    [  0%] Building C object 3rdparty/zlib/CMakeFiles/zlib.dir/adler32.c.o
    In file included from /projects/opencv/3rdparty/zlib/adler32.c:8:
    In file included from /projects/opencv/3rdparty/zlib/zutil.h:22:
    In file included from /projects/opencv/3rdparty/zlib/zlib.h:34:
    /projects/opencv/build/3rdparty/zlib/zconf.h:423:14: fatal error: 'sys/types.h' file not found
    #    include <sys/types.h>      /* for off_t */
                 ^
    1 error generated.
    make[2]: *** [3rdparty/zlib/CMakeFiles/zlib.dir/adler32.c.o] Error 1
    make[1]: *** [3rdparty/zlib/CMakeFiles/zlib.dir/all] Error 2
    make: *** [all] Error 2

    これはXcodeのコマンドラインツールに関係したエラーです。
    シェル上で以下のコマンドを実行してXcodeのコマンドラインツールをInstall or Updateすれば大丈夫です。

    xcode-select --install

    これで1つ目は通過。次にこのエラーが出ます

    問題2) modules/videoio/src/cap_qtkit.mm:46:9: fatal error: ‘QTKit/QTKit.h’ file not found

    [ 46%] Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_qtkit.mm.o
    /projects/opencv/modules/videoio/src/cap_qtkit.mm:46:9: fatal error: 'QTKit/QTKit.h' file not found
    #import <QTKit/QTKit.h>
            ^
    1 error generated.
    make[2]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_qtkit.mm.o] Error 1
    make[1]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/all] Error 2
    make: *** [all] Error 2

    これはQTKitが見つからないというものです。
    CMakeでQT関係のチェックを入れて無くてもこれが出ます。
    これはOpenCV3.0.0やOpenCV3.1.0などを使っていると出て来るエラーです。
    QTがないとかじゃなくて、パスの問題らしいです。
    それ以降のmasterブランチかそれより新しいOpenCVが出ている場合は(2016/12/19では3.1が最新)それを使えば大丈夫です。
    gitでopencvを持ってきている人はmasterかそれより新しいバーjンををチェックアウトして再度やり直せばOKです。

    問題3) modules/python/src2/cv2.cpp:6:10: fatal error: ‘Python.h’ file not found

    [ 99%] Building CXX object modules/python2/CMakeFiles/opencv_python2.dir/__/src2/cv2.cpp.o
    /projects/opencv/modules/python/src2/cv2.cpp:6:10: fatal error: 'Python.h' file not found
    #include <Python.h>

    99%までいってエラーです。しょげないでくださいね。
    Python.hが見つからないエラーです。
    解決策は2つあります。

    1. 正しいパスを与える
    2. opencv_python2をそもそも不要にする

    まず1ですが、python.hの場所が間違ってるだけなので

    export C_INCLUDE_PATH=/System/Library/Frameworks/Python.framework/Headers

    のように正しいパスを与えればOKです。
    もしくは「いや、pythonからopencvつかわないし。」というのであれば
    CMakeにおいて
    「BUILD_opencv_python2」のチェックを外してconfigure->generateすればそもそもビルドされないのでOKです。

  • 子供が生まれて10日

    なんか最近自分の会社のサイトばかりいじってこっちを書いてなかった。
    そうそう、子供が生まれて10日程度経った。
    このぐらい経つと少し様子が変わってくるね。
    「かわいい♪」みたいなブログは面白くないのでもうちょっとこのサイトっぽい記事を書いてみるね。

    最初は起きたら泣いて、泣いたらおっぱいなんだけど、飲むと眠る。
    だから「ただ起きてる」とか「泣いてるけどおっぱいじゃない」状態がなかった。
    それがだんだん「ただ起きてる」状態が増えてきて、何やらキョロキョロしてる。生まれたては視覚がちゃんとしてないらしからぼやけて見えてるらしい(これはどうやって調べたんだろう)。
    あとは「おっぱいじゃないけど泣く」というのが起きる。抱っこすると落ち着くみたいな。
    抱っこされてるかどうかをどうやって判断してるのやら。揺れ?温度?匂い?
    泣いたら抱っこしてもらえると学習されないかちょっと不安。

    ちなみに「笑う」というのがなくて、「普通」「寝る」「泣く」しかない。

    誰でも知ってるように赤ちゃんは昼夜関係なく3時間おきぐらいにお腹空いて泣く。
    「大変だろうなぁ」って思ってたけど、予想より大変だったのがミルクorおっぱいをあげるのにじかんがかかること。5分とかじゃなくて30分ぐらいかかる。
    まずミルクの準備に5分はかかる。あと、飲み干すのにもうちょいかかる。
    それからそのまま寝かせると嘔吐して、嘔吐したもので窒息する可能性があるからゲップさせないといけない。背中トントンする。
    そしたら寝かす。(ミルクいらないときは奥さんにやってもらって僕は一瞬起きて寝ちゃってる。ママありがと)
    ミルクは冷蔵庫に寝る前に大量に作っておいておくのが今のところベストな方法。
    「心配だなぁ」と思ってWHOの資料見たら冷蔵庫のミルクは24時間は大丈夫らしい。また、常温のミルクは20分までなら大丈夫らしい。もちろん一度も口をつけてない前提で。
    それにしても不便だよね。
    枕元に「30ml」とか押すと 殺菌->調合->温度調節 までやって哺乳瓶が出て来る自販機みたいな装置があればいいのに。

    感覚を育てるのに「足を持って動かした瞬間に同時に名前を呼ぶ」というのをたまにやってるけど、意味があるか怪しい。

    目がどのぐらい見えてるのかをテストするために、僕の顔を見てるときに同じ表情で口だけ大きく開けたり閉じたりしてみた。
    口の方を見るかと思ったら全く気にしてなかった。
    目玉は口の動作と関係なく僕を見るでもなくいろいろな場所を1秒おきぐらいで動かしてる。
    ただ、明るい部屋に連れてくと眩しがるから全体的に見えてはいる。
    コントラストがもっと強いものじゃないとだめなのかもしれないね。

    などなど、色々見てるんだけど、とにかくかわいい。
    寝室に寝かしつけて、電気を消してしずか〜にリビングに来て、小さな音でテレビを見る。

  • RaspberryPi3のWifiが繋がらない or 繋がらなくなった時

    http://essence.cambrianrobotics.com/contents/Wifiを設定する(Shell)/6?series=1

    のようにWifiをwpa_passphraseを使って設定したのにうまくつながらない時や繋がらなくなることがあります。
    特にラズパイをHDMIにつないで見た時に右上のWifiアイコンが「Wifi not associated」となりまるで完全に繋がっていないようにみえて、再起動しても上手く動かない場合があります。
    対処法としてはまず

    Localeの設定をUSにする

    画面上からPreference->Raspberry Pi Configuration->Localisationにおいて
    Language English
    Locale USA
    Wifi Country US
    にして再起動するとうまくいく場合があります。
    ただ、僕はこれではつながらず つながったあとに変えても変わらなかったので人によるようです。

    interfaceを再起動する

    ターミナルから

    sudo ifdown wlan0
    sudo ifup wlan0

    とwlan0のインターフェイスを再起動することで接続できるようになります。
    とくに違うアクセスポイントにつなぐためにwpa_passphraseを書き直した場合はこれを行う必要があります。

  • 古いVivadoが消せない

    今はVivadoは2016.1が最新です。
    Vivadoは同じパソコンに同時にいろんなバージョンを入れることができるのですが(フォルダがバージョンごとに別になる
    サイズがでかいので使わないなら古いのは消したいところです。

    アンインストーラーで削除

    Vivadoにはアンインストーラーがあり、そこから普通に削除できます。
    「設定」->「アプリケーション」

    「コントロールパネル」->「アプリの追加・削除」
    などです。
    ただ、削除しようと起動するとエラーが出ることがあります。

    「msvcp110.dll is missing」

    dllファイルが見つからないエラーなのですが、これ自体はVivadoの中にあります。フォルダを移動すれば解決です。
    まずVivadoがインストールされている場所のbinを開きます
    C>Xilinx>.xinstall>Vivado_2014.4(消したいVivadoです)>bin
    です。
    ここに

    • msvcp110.dll
    • msvcr110.dll
    • vccorlib110.dll

    という3つのdllがあると思います。
    これをコピーします

    vivadouninstall0

    そして、これらを1つ上の階層に貼り付けます。
    こんな感じになると思います。

    vivadouninstall1

    この状態でアンインストーラーを起動すればすんなり古いVivadoは削除されます。

    参考:

    https://forums.xilinx.com/t5/Installation-and-Licensing/Vivado-2015-3-uninstall-fails-msvcp110-dll-is-missing/td-p/666152

    https://forums.xilinx.com/t5/Installation-and-Licensing/Vivado-2015-3-uninstall-fails-msvcp110-dll-is-missing/td-p/666152/page/2

     

     

  • Ubuntu 16.04でMySQLが消える対策

    本日Ubuntu16.04が正式リリースされました。
    2年ぶりのLTSリリースです。

    16.04にする

    やり方はここに載っています
    https://www.digitalocean.com/community/tutorials/how-to-upgrade-to-ubuntu-16-04-lts

    sudo apt-get update
    sudo apt-get upgrade
    sudo apt-get install update-manager-core
    sudo do-release-upgrade -d
    

    こんな感じで開始されます。
    あとは色々聞かれるのでだいたいYesで進めます。

    僕の場合、rebootに失敗したとのエラーが出ましたが、問題なく再起動しました。

    File Not Foundになる!

    僕のサイトの構成は
    Nginx
    php7.0
    fpm-mysql-5.5
    でした。
    静的ファイルは問題なく開けましたが、wordpressが開けない。。
    nginxのエラーログにFACTCGIのパスエラーが

    nginxのコンフィグで

    fastcgi_param   SCRIPT_FILENAME {{wordpress_dir}}/$document_root$fastcgi_script_name;

    だったのを

    fastcgi_param   SCRIPT_FILENAME {{wordpress_dir}}/$fastcgi_script_name;

    にしたらアクセスできるように。そもそもdocument_rootは不要だったんじゃ。。。

    MySQLが消えた!

    アクセスできるけど今度はデータベースにアクセス出来ないエラー。
    wp-config.phpを確認しろって言われるけど合ってる。
    プロセスを見ると

    sudo service mysql status
    ● mysql.service - LSB: Start and stop the mysql database server daemon
       Loaded: loaded (/etc/init.d/mysql; bad; vendor preset: enabled)
       Active: active (exited) since Fri 2016-04-22 20:58:31 JST; 4min 40s ago
         Docs: man:systemd-sysv-generator(8)
      Process: 4809 ExecStart=/etc/init.d/mysql start (code=exited, status=0/SUCCESS)

    動いてそう。再起動もできる。
    ただ、接続ができない。。。。致命的だ

    mysql
    The program 'mysql' can be found in the following packages:
     * mysql-client-core-5.7
     * mariadb-client-core-10.0
     * mysql-client-core-5.6

    驚くべきことにどこを探してもmysqlが見つからない。
    動いてるはずなのに。
    心配になってデータベースのデータ自体を確認したらそれは残ってた

    ls /var/lib/mysql
    debian-5.5.flag  ibdata1  ib_logfile0  ib_logfile1    mysql  mysql_upgrade_info  performance_schema  wordpress

    なぜ消えたのか謎だけど、更に悪いことにmysql-client-5.5の再インストールもできない。。

    解決策はmysql-serverの再インストール

    散々調べた挙句、http://ubuntuforums.org/showthread.php?t=2319801 が参考になった。
    mysql-serverを入れればいい。

    sudo apt-get install mysql-server

    これによりmysqlが5.7になった。
    テーブル構成も自動的に更新されたみたい。
    公式ドキュメントによると 「5.5は5.6に一度上げて5.7にしましょう」って書いてあったし、dumpファイルを使いましょうとかあったけど、自動的に上がってしまった。。
    とりあえず使ってる範囲だと問題はなさそう。