Я пытаюсь запустить мой модуль PiCamera v2.1 на моем RaspberryPi4. К сожалению, я должен установить дистрибутив Ubuntu 19.10 64bit . Пока все хорошо.
Я установил Opencv4 . Были некоторые большие проблемы, потому что кажется, что Ubuntu не поставляется с VideoCore , raspi-config et c. Поэтому я скачал и обновил прошивку с помощью sudo rpi-update
и установил userland
.
Сначала я попытался открыть камеру с помощью Videocapture cap(0)
, но это выдает кучу ошибок (см. Здесь Ubuntu 19.10 : Включение и использование Raspberry Pi Camera Module v2.1 ), и я прочитал, что это только для USB-камер (на самом деле я не могу в это поверить, потому что в Raspbian я могу использовать такой модуль)
Так я гуглил и нашел это репо https://github.com/cedricve/raspicam. Я установил его, но даже с этим я не могу запустить его.
Опять вот что я отключил:
- установить opencv4
- обновить прошивку
- установка пользовательского пространства
- запись
start_x=1
и "gpu_mem = 128" в /boot/firmware/config.txt
- выполнение
modprobe bcm2835-v4l2
sudo vcgencmd get_camera
приводит к поддерживается и обнаружено = 1
Когда я использую sudo raspistill -o test.jpg
, открывается окно и изображение сохраняется. Но есть некоторые ошибки:
mmal: mmal_vc_shm_init: could not initialize vc shared memory service
mmal: mmal_vc_component_create: failed to initialise shm for 'vc.camera_info' (7:EIO)
mmal: mmal_component_create_core: could not create component 'vc.camera_info' (7)
mmal: Failed to create camera_info component
Также мне нужно запустить его с sudo , хотя я пробежал sudo usermod -a -G video ubuntu
с раз (также перезагружен) . Странно, не правда ли?
Мой пример сценария доступа к камере:
#include <iostream>
#include <raspicam/raspicam_cv.h>
using namespace std;
int main ( int argc,char **argv ) {
time_t timer_begin,timer_end;
raspicam::RaspiCam_Cv Camera;
cv::Mat image;
int nCount=100;
//set camera params
Camera.set( cv::CAP_PROP_FORMAT, CV_8UC1 );
//Open camera
cout<<"Opening Camera..."<<endl;
if (!Camera.open()) {cerr<<"Error opening the camera"<<endl;return -1;}
//Start capture
cout<<"Capturing "<<nCount<<" frames ...."<<endl;
time ( &timer_begin );
for ( int i=0; i<nCount; i++ ) {
Camera.grab();
Camera.retrieve ( image);
if ( i%5==0 ) cout<<"\r captured "<<i<<" images"<<std::flush;
}
cout<<"Stop camera..."<<endl;
Camera.release();
}
Компиляция прошла успешно:
sudo g++ stream.cpp -I/usr/local/include/opencv4 -I/usr/local/include -L/usr/local/lib -L/opt/vc/lib -lraspicam_cv -lopencv_core -lraspicam -lmmal -lmmal_core -lmmal_util -lopencv_highgui -lmmal_vc_client -lvcos -lbcm_host -o stream
Выполнение Поток (даже с sudo) приводит к:
Opening Camera...
mmal: mmal_component_create_core: could not find component 'vc.ril.camera'
Failed to create camera componentopen Failed to create camera component/home/raspicam/src/private/private_impl.cpp 103
Error opening the camera
У кого-нибудь есть идеи, что я могу попробовать?
Спасибо!