私はOpenCVの初心者であり、組み込みプラットフォームで実行される単純なアプリケーションを取得するために最善を尽くしています。OpenCV2.4.4をクロスコンパイルし、必要に応じてWITH_GTK = ON、WITH_UNICAP = ON、WITH_V4L = ONでビルドしました。カメラとGUIのサポート。次のサンプルコードはホスト上でクロスコンパイルされます:
#include <opencv/cv.h>
#include <opencv/highgui.h>
using namespace cv;
int main(int, char**)
{
VideoCapture cap(0); // open the default camera
if (!cap.isOpened()) // check if we succeeded
return -1;
Mat edges;
namedWindow("edges", 1);
for (;;) {
Mat frame;
cap >> frame; // get a new frame from camera
cvtColor(frame, edges, CV_BGR2GRAY);
GaussianBlur(edges, edges, Size(7, 7), 1.5, 1.5);
Canny(edges, edges, 0, 30, 3);
imshow("edges", edges);
if (waitKey(30) >= 0)
break;
}
return 0;
}
静的リンク用にこの方法でコンパイル:
arm-linux-gnueabi-g ++ -mcpu = cortex-a9 -mfpu = neon -static opencv_camshow.cpp -o exe -I/home/om/OpenCV-2.4.4/platforms/linux/build_soft/install/include -L/home/om/OpenCV-2.4.4/platforms/linux/build_soft/install/lib -L / home/om/OpenCV-2.4.4/platforms/linux/build_soft/3rdparty/lib -lopencv_calib3d -lopencv_features2d -lopencv_flann -lopencv_imgproc- lopencv_core -lopencv_contrib -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_flann -lopencv_photo -lopencv_videostab -pthread -lm -lrt -lzlib -static
ここに問題があります。ターゲットで実行可能ファイル 'exe'を実行しようとすると、このランタイムエラーが発生します:
HIGHGUIエラー:V4L/V4L2:VIDIOC_S_CROP OpenCVエラー:不特定のエラー(関数は実装されていません。Windows、GTK + 2.x、またはCarbonをサポートしてライブラリを再構築してください。UbuntuまたはDebianを使用している場合は、libgtk2.0-devとpkgをインストールしてください-config、cvNamedWindow、ファイル/home/om/OpenCV-2.4.4/modules/highgui/src/window.cpp、行652でcmakeまたはconfigureスクリプトを再実行します)
'cv :: Exception'のインスタンスをスローした後に呼び出された終了
what():/ home/om/OpenCV-2.4.4/modules/highgui/src/window.cpp:652:エラー:(-2)関数は実装されていません。 Windows、GTK + 2.x、またはCarbonをサポートしてライブラリを再構築します。 UbuntuまたはDebianを使用している場合は、libgtk2.0-devとpkg-configをインストールしてから、cmakeを再実行するか、関数cvNamedWindowでスクリプトを構成します。
libgtk2.0-devを再インストールし、pkg-configが存在し、OpenCVを再コンパイルしましたが、これは役に立ちませんでした。誰かが克服する方法を知っているかどうか教えてくださいこの問題。よろしくお願いします。〜Om
詳細:この問題の原因を突き止めましたが、まだ修正されていません...
私の理解では、問題はopencvのcmakeスクリプトにあります。 GTKの存在を認識しないため、gtkをサポートせずにクロスコンパイルします。これは、armベースのgtkライブラリがツールチェーンのlibフォルダーに存在し、そのパスがシステムパスにエクスポートされていることを確認した後です。
cmake
ステートメントを実行した後、cmake
の出力に次のテキストが含まれているかどうかを確認します:V4L/V4L2: Using libv4l
。
そこにない場合は、Synapticパッケージマネージャーからv4l2ucp
、v4l-utils
、およびlibv4l-dev
をインストールします。次に、cmake
を実行して、再度ビルドします。
これは私にとってはうまくいきましたが、Ubuntu12.04でpythonバインディングを使用してOpenCVを使用していました。
クロスコンパイルするには、適切なパスを検索するようにpkg-configに指示する必要があります(デフォルトでは、これがホストconfig/.pcファイルになります!)
- $ PKG_CONFIG_PATHにリストされているディレクトリを検索しています
- $ PKG_CONFIG_LIBDIRが指定されている場合、デフォルトのディレクトリ(/ usr/lib/pkgconfigなど)でコンパイルされたものとPKG_CONFIG_PATHが上書きされます。 PKG_CONFIG_LIBDIRを指定するとき、ドキュメントに異なることが記載されていても、pkg-configはPKG_CONFIG_PATHの内容を完全に無視することに注意してください。
Opencvhighguiエラー
Cmakeを使用してopencvを再インストールする必要があります
git clone https://github.com/Itseez/opencv.git
cd ~/opencv
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_IPP=OFF ..
make -j4 Sudo
make install
export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages