2014年4月22日火曜日

cv::MatのTips

サンプルソースを見ていいると

for (int y = 0; y < frame.cols ; y++) {
    ... frame.ptr<unsigned char>(y) ...
}
という記述があり、何をしているかわからなかった。


mat.hppのソースを見てみると、

template<typename _Tp> inline _Tp* Mat::ptr(int y)
{
    CV_DbgAssert( y == 0 || (data && dims >= 1 && (unsigned)y < (unsigned)size.p[0]) );
    return (_Tp*)(data + step.p[0]*y);
}

と定義されており、画像データのラインY行目の先頭のポインタを求め、指定の型にcastするものとわかった。





その他
OpenCVをさわっていると、source, distinationの並びに慣れてしまい、memcpyがto, fromの並びなので、ソースを見ていて悩んでしまうようになった

Ubuntu Tips Cameraのデバイス番号を調べる

cv::VideoCaptureのデバイスをopenする場合、デバイス番号を指定する必要がある
しかし、複数のカメラを接続した場合、どのカメラがどの番号のアサインされるかは不明である

その場合、
ls /dev/serial/by-id
ls /dev/serial/by-path/
等のコマンドでデバイスの名称とデバイス番号を調べればよい

Ubuntu14.04に更新したらOpenCV2.4.8のプログラムが動作しなくなった

サンプルプログラムが起動しなくなった。デバックモードで動かすと、libavcodec.so.53: cannot open shared object file: No such file or directoryのためエラーとなっている。

Google先生に訪ねてみたが、同じような症状が見つからない。
最後の手段として、OpenCVを2.4.8から2.4.9に更新して見ることにした。

ここからソースをダウンロードして、任意のフォルダーに展開し、展開したフォルダーに移動

デフォルトのままの設定で、以下のようにビルドとインストールを行った。

cmake -DCMAKE_BUILD_TYPE=RELEASE
make -j4
sudo make install
sudo ldconfig

OpenCV2.4.8を削除しなかったため、そのまま上書きする形で.2.4.9をインストールした

再度サンプルプログラムをビルドし、実行すると今度は問題なく動作した。

2014年4月21日月曜日

OpenCV 2.4.9の変更点

オリジナルはここ

大きな変更はないがAndroidを使うのであれば、変更したほうがよい

OpenCL 
最適化でいくつかの改善 
ocl::sum, ocl::countNonZero, ocl::minMax, bitwise operationss, Haar face detector 

Android 
Nativeカメラの修正 
CUDA対応のSoC向けにCUDAサポートの改良 


VTK-based 3D 視覚化モジュールを安定化と2.4ブランチへのバックポート 

デモビデオはここ 

2.4.8から156のpull request 

2.4.8から55のバグ修正

以上

2014年4月20日日曜日

OpenCVforAndroid 2.4.9のサンプルをビルドしてみた

2.4.7の記事はここ

最初に
ubuntuの更新
Android SDKの更新
をしておく

NDKは、最新のものをダウンロードし、展開してパスを設定し直すだけで良い

2.4.7のプロジェクトは、eclipseのPackage Explorerからすべて削除
Package Explorerを右クリックしimportでOpenCV-2.4.9-android-sdk/sdk/javaを登録

その後に、
各サンプルをimportする

また、ndkのビルド用のバッチがwindows用になっているため、
プロジェクトのプロパティを開きC++buildの
ndk-build.cmdをndk-buildに直す

以上でサンプルアプリができる


実機のOpenCV Managerをアンインストールし、OpenCV-2.4.9-android-sdk/apkの
OpenCV_2.4.9_Manager_2.18_armv7a-neon.apkを代わりにインストールする

native-activityのサンプルは、2.4.8までは、問題があり、高性能のSoCで起動しなかった。
2.4.9では、S4 ProやSnapdragon 600のスマフォでの動作が確認できた。

特に、Snapdragon 600のスマフォでは、FullHDのディスプレーでもVGA30fpsのスピードが出ているのは素晴らしい。
ただし、室内では、カメラの露光の関係で30fpsは出ないため、強い光源にむける必要がある

以上

OpenCV 2.4.9が密かに公開されている

公式には公開されていないが、OpenCV2.4.9がダウンロードできる

Windowsはここから

Androidはここから

Linuxはここから

Macはまだのようである