问题:
最近在研究使用单目摄像头获取深度的问题,在用python写了个用摄像头拍照的程序后,运行,出现了如标题所示的报错:
HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP
OpenCV Error: Assertion failed (size.width>0 && size.height>0) in imshow, file /home/pi/Documents/opencv-2.4.13/modules/highgui/src/window.cpp, line 261
terminate called after throwing an instance of 'cv::Exception'
what(): /home/pi/Documents/opencv-2.4.13/modules/highgui/src/window.cpp:261: error: (-215) size.width>0 && size.height>0 in function imshow
在该博客中查到了解决办法:HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP错误解决方法
解决办法:
1.安装如下依赖:
sudo apt-get install libv4l-dev
sudo apt-get install v4l2ucp
sudo apt-get install v4l-utils
2.安装如下依赖后重新安装opencv
安装opencv参照此篇文章:Opencv 2.4.9在Ubuntu下的配置安装
在曾经安装过opencv的电脑上,只需重新编译安装opencv即可,进入opencv的release文件夹,执行以下步骤:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo make install
sudo ldconfig -v
重新安装opencv后,程序运行成功。
出现以上问题的原因是:
val/v4l2等必要的依赖库安装在opencv之后,opencv库编译时没有编译进去,因此在重新安装依赖后,要重新编译opencv