サンプルソースを見ていいると
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の並びなので、ソースを見ていて悩んでしまうようになった
OpenCV、機械学習、はやりのDeep learningの環境構築の方法、サンプルの動かし方、APIの使い方、Tipsなどをすぐに忘れてしまうので、備忘録として記録している。記憶がなくなるスピードが、早いのでメモしておかないと再現できなくなる確率が高まっている。 最近、再度HDDを飛ばしてしまい、過去の自分のページに再度助けられた。 また、DNNモジュールを触る機会が増えているので、C++からPyhonへと鞍替え中。 内容を気にいっていただければ、twitterで紹介願います。
2014年4月22日火曜日
Ubuntu Tips Cameraのデバイス番号を調べる
cv::VideoCaptureのデバイスをopenする場合、デバイス番号を指定する必要がある
しかし、複数のカメラを接続した場合、どのカメラがどの番号のアサインされるかは不明である
その場合、
ls /dev/serial/by-id
ls /dev/serial/by-path/
等のコマンドでデバイスの名称とデバイス番号を調べればよい
しかし、複数のカメラを接続した場合、どのカメラがどの番号のアサインされるかは不明である
その場合、
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をインストールした
再度サンプルプログラムをビルドし、実行すると今度は問題なく動作した。
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の変更点
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は出ないため、強い光源にむける必要がある
以上
最初に
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は出ないため、強い光源にむける必要がある
以上
登録:
投稿 (Atom)