用C++在Ubuntu上运行PiCamera



我正试图让我的PiCamera Module v2.1在我的RaspberryPi4上运行。不幸的是,我必须安装Ubuntu 19.10 64位发行版。到目前为止还不错。

我已经安装了Opencv4。有一些大麻烦,因为Ubuntu似乎没有VideoCoreraspi-config等。所以我下载并更新了带有sudo rpi-update的固件,并安装了userland

首先,我试图用Videocapture cap(0)打开相机,但这引发了一堆错误(请参阅此处Ubuntu 19.10:启用和使用树莓派相机模块v2.1(,我读到这只适用于usb相机(实际上我不敢相信,因为在树莓派下,我可以使用这样的模块(

所以我在谷歌上搜索了一下,发现了这个回购https://github.com/cedricve/raspicam.我已经安装了它,但即使这样,我也无法让它运行。

下面是我记下的内容:

  • 安装opencv4
  • 更新固件
  • 安装userland
  • 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 ubuntus(也重新启动(。奇怪,不是吗?

我访问相机的示例脚本是:

#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

有人知道我可以试试什么吗?

谢谢!

我在为raspcam编译ROS节点时遇到了这个错误。我通过在我的CMakeLists.txt中添加以下内容来修复它:

设置(CMAKE_SHARED_LINKER_FLAGS"-Wl,--不需要"(

问题是链接器优化了对包含"vc.rel.camera"的库的引用,在运行时找不到计数。

希望它对你有用。

相关内容

  • 没有找到相关文章

最新更新