Ubuntu 19.10: включение и использование Raspberry Pi Camera Module v2.1 - PullRequest
1 голос
/ 27 апреля 2020

Я установил Ubuntu 19.10 на свой Raspberry Pi. Я знаю, что raspbian был бы лучшим выбором, но я должен использовать Ubuntu по некоторым другим причинам. Я также установил opencv4 и протестировал его с загрузкой и показом изображения. Работает нормально!

Затем я захотел настроить мою камеру распи на sudo raspi-config, но команда не была найдена, поэтому я попробовал через: sudo apt-get install raspi-config. Это приводит к «Не удается найти пакет raspi-config».

Я прочитал inte rnet. Затем я попытался включить start_x=1 в свой /boot/firmware/config.txt. После перезагрузки я вижу устройство video0 под /dev. Пока все хорошо.

Я написал небольшой текстовый скрипт:

#include <opencv2/highgui.hpp>
#include <opencv2/core/types_c.h>
#include <opencv2/videoio.hpp>
using namespace cv;
int main(int argc, char** argv){

    VideoCapture cap;
    cap.open(0);
    Mat frame;
    for(;;){
        cap.read(frame);
        if (frame.empty()){
            std::cerr << "Error";}
        imshow("Live", frame);
    }
    return 0;
    }

Это приводит к следующим ошибкам:

[ WARN:0] global /opt/opencv/modules/videoio/src/cap_gstreamer.cpp (1758) handleMessage OpenCV | GStreamer warning: Embedded video playback halted; module v4l2src0 reported: Failed to allocate required memory.
[ WARN:0] global /opt/opencv/modules/videoio/src/cap_gstreamer.cpp (888) open OpenCV | GStreamer warning: unable to start pipeline
[ WARN:0] global /opt/opencv/modules/videoio/src/cap_gstreamer.cpp (480) isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created
Errorterminate called after throwing an instance of 'cv::Exception'
  what():  OpenCV(4.3.0-dev) /opt/opencv/modules/highgui/src/window.cpp:376: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'imshow'

Aborted (core dumped)

Я думаю, что проблема может быть все еще правильно устанавливаете камеру, потому что, на мой взгляд, эта ошибка возникает из-за пустой рамки.

Спасибо за помощь!

1 Ответ

0 голосов
/ 27 апреля 2020

OpenCV может работать только для USB-камеры, но не для камеры Raspberry Pi.

Аппаратный интерфейс отличается.

enter image description here Вы можете найти некоторые репозитории Picamera C ++ из Raspberry Pi Q & A .

Например:

#include <ctime>
#include <fstream>
#include <iostream>
#include <raspicam/raspicam.h>
using namespace std;

int main ( int argc,char **argv ) {
    raspicam::RaspiCam Camera; //Camera object
    //Open camera 
    cout<<"Opening Camera..."<<endl;
    if ( !Camera.open()) {cerr<<"Error opening camera"<<endl;return -1;}
    //wait a while until camera stabilizes
    cout<<"Sleeping for 3 secs"<<endl;
    sleep(3);
    //capture
    Camera.grab();
    //allocate memory
    unsigned char *data=new unsigned char[  Camera.getImageTypeSize ( raspicam::RASPICAM_FORMAT_RGB )];
    //extract the image in rgb format
    Camera.retrieve ( data,raspicam::RASPICAM_FORMAT_RGB );//get camera image
    //save
    std::ofstream outFile ( "raspicam_image.ppm",std::ios::binary );
    outFile<<"P6\n"<<Camera.getWidth() <<" "<<Camera.getHeight() <<" 255\n";
    outFile.write ( ( char* ) data, Camera.getImageTypeSize ( raspicam::RASPICAM_FORMAT_RGB ) );
    cout<<"Image saved at raspicam_image.ppm"<<endl;
    //free resrources    
    delete data;
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...