2

組み込みターゲット ボード (FriendlyARM mini6410、Linux カーネル 2.6.38 を実行するプロセッサ アーム 1176) で OpenCV を使用しています。ボードに提供されているツールチェーンを使用して OpenCV 2.4.4 ライブラリをコンパイルしました。これは ftp にあります ( FriendlyARMのWeb サイトを参照してください)。GTK、ffmpeg を無効にし、v4l を有効にしました。ライブラリが正常にコンパイルされました。

次に、コードを記述します。

#include <opencv.hpp>
#include <highgui/highgui.hpp>
#include <imgproc/imgproc.hpp>
#include <iostream>
#include <stdio.h>

using namespace cv;
using namespace std;

int main()
{
    int i;
    cout << "initialise" << endl;
    IplImage* img=0;
    cout << "capturing ..." << endl;
    CvCapture* capture = cvCaptureFromCAM(2);
    cout << "get here" << endl;
    if(!capture){
        cout << "not capture" << endl;
        return -1;
    }
    cout << "captured" << endl;
    img=cvQueryFrame(capture);

   IplImage* img1 = cvCreateImage(cvGetSize(img),8,3);
   // cvCvtColor(img,img1,CV_RGB2GRAY);
   cvCopy(img, img1);
   cvSaveImage("cam_snap.jpg",img1);
   cvReleaseImage( &img1 );
   cvReleaseImage( &img );
   cvReleaseCapture( &capture );
   cout << "exit" << endl;

   return 0;
}

コードが正常にビルドされました。カメラ (PS3 の目) に接続されたターゲット ボードで .elf 実行可能ファイルを実行しますが、結果の画像は壊れたテレビのように見えます (ノイズのようなもの)。

ノイズのような画像

私のホストでは、結果の画像は期待どおりです (カメラの前のシーン)。何がうまくいかなかったのか、またはどこからデバッグを開始すればよいのか、提案をいただけますか?

4

2 に答える 2

1

深さとチャンネルを確認する必要があります。おそらく位置合わせの問題です。さらに、画像がおそらく RGB ではなく BGR であることに注意してください。また、C++ では IplImage の代わりに cv::Mat を使用し、CVCapture の代わりに VideoCapture を使用する必要があります。

このコード サンプルは動作するはずです。(あなたと同じアーチでテストされていません)

#include <opencv.hpp>
#include <highgui/highgui.hpp>
#include <imgproc/imgproc.hpp>
#include <iostream>
#include <stdio.h>

using namespace cv;
using namespace std;

int main()
{
    VideoCapture capture = cv::VideoCapture(0);
    cout << "get here" << endl;
    if(!capture.isOpened())  // check if we succeeded                                                                                                   
         return -1;

    cout << "captured" << endl;
    Mat img;
    capture >> img;
    imwrite("./test.png", img);
    capture.release();
    cout << "exit" << endl;
    return 0;
}

それが役に立ったことを願っています。

于 2013-05-16T08:46:47.490 に答える
0

わかりました。mini 6410 は USB 1.0 を実行し、ps3 eye には USB 2.0 が必要です。標準のウェブカメラ (中国製品、itech pc カメラ) を使用してプログラムを試してみましたが、素晴らしく動作します。保存された画像は、カメラの前のシーンを示しています

于 2013-05-16T15:22:08.897 に答える