web-dev-qa-db-ja.com

ランタイムOpencvHighGuiエラー-「HIGHGUIエラー:V4L / V4L2:VIDIOC_S_CROP」。 Opencvクロスコンパイル。ホスト= 64ビットUbuntu12.04。ターゲット= ARM-Cortex-A9

私は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フォルダーに存在し、そのパスがシステムパスにエクスポートされていることを確認した後です。

11
om9

cmakeステートメントを実行した後、cmakeの出力に次のテキストが含まれているかどうかを確認します:V4L/V4L2: Using libv4l

そこにない場合は、Synapticパッケージマネージャーからv4l2ucpv4l-utils、およびlibv4l-devをインストールします。次に、cmakeを実行して、再度ビルドします。

これは私にとってはうまくいきましたが、Ubuntu12.04でpythonバインディングを使用してOpenCVを使用していました。

10
Varun Kumar

クロスコンパイルするには、適切なパスを検索するようにpkg-configに指示する必要があります(デフォルトでは、これがホストconfig/.pcファイルになります!)

pkg-config Webサイトから

  • $ PKG_CONFIG_PATHにリストされているディレクトリを検索しています
  • $ PKG_CONFIG_LIBDIRが指定されている場合、デフォルトのディレクトリ(/ usr/lib/pkgconfigなど)でコンパイルされたものとPKG_CONFIG_PATHが上書きされます。 PKG_CONFIG_LIBDIRを指定するとき、ドキュメントに異なることが記載されていても、pkg-configはPKG_CONFIG_PATHの内容を完全に無視することに注意してください。
2
drahnr

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