关于虚拟机下Linux的opencv获取摄像头图像问题
来源:互联网 发布:mac os x 10.11.6 cdr 编辑:程序博客网 时间:2024/04/30 21:03
最近在虚拟机Ubuntu14.04下运行PTAM。
配置过程参考:http://makaidong.com/zhuquan945/1/129074_12259634.html
在最后运行时想使用购买外接USB摄像头(YUYV)进行实验,但发现怎么也读取不到图片(官网下载的Code)Linux下的makefile文件的更改
CC = g++COMPILEFLAGS = -I /usr/include -I /usr/local/include -D_LINUX -D_REENTRANT -Wall -O3 -march=nocona -msse3LINKFLAGS = -L /usr/local/lib -lGVars3 -lcvd -lopencv_legacy -lopencv_core -lopencv_video -lopencv_highgui -lGLU -lGL -llapack -lblas -lgfortran# Edit this line to change video sourceVIDEOSOURCE = VideoSource_Linux_V4L.o
一开始尝试很多次觉得是系统的V4L工作有问题,变想更改为用opencv的方式读取摄像头信息。
在git上下载了:https://github.com/jonazpiazu/PTAM 由opencv的读取文件 VideoSource_Linux_OpenCV.cc 。
make后运行仍然只能读取桌面图象。(非摄像头问题,在window下尝试了可正常捕获图片)便尝试在kdevelop下单独编写opencv的获取摄像头的程序,发现一直都不出图片,select time out 所以显示图片和一片黑。针对该问题最终找到了解决方案:https://stackoverflow.com/questions/15177313/accessing-a-webcam-from-pyside-opencv
即需要添加延时,由充足的时间对图像进行捕获(延时也不必过长)。在While下可正常获得图片帧流。变将其转到PTAM的VideoSource_Linux_OpenCV.cc下尝试发现仍然不行。后来将While语句改为顺序语句发现需要先读取几帧(该几帧显示为黑),然后后面才可以正常进行,单独的opencv尝试代码如下:
#include <iostream>
#include<opencv2/core/core.hpp>#include<opencv2/highgui/highgui.hpp>using namespace std;int main(int argc, char **argv) { std::cout << "Hello, world!" << std::endl; /*void *mptr = new cv::VideoCapture(0);cv::VideoCapture* cap = (cv::VideoCapture*)mptr;if(!cap->isOpened()){cerr << "Unable to get the camera" << endl;exit(-1);}cv::Mat frame;(*cap).read(frame); //第一次 也可将read 用 >>cv::imshow("1",frame);cv::waitKey(1);(*cap).read(frame); //第二次 前俩次读取显示为全黑图cv::imshow("1",frame);cv::waitKey(1);(*cap).read(frame); //第三次 从此处开始后有图cv::imshow("1",frame);cv::waitKey(1);cv::waitKey(0); */ cv::VideoCapture capture(0); if (!capture.isOpened()){cout << "create camera capture error" << endl;exit(-1); } cv::Mat img; capture>>img; cv::imshow("image", img); cv::waitKey(1);//必须加一个延时 第一次无图 capture>>img; cv::imshow("image", img); cv::waitKey(1);//必须加一个延时 开始有图 cv::waitKey(0); return 0;}
对该问题进行了总结:首先注意USB是不是3.0 我的主要问题就是这个,
然后opencv的话应该注意第几帧才可以在正常读取图片以及时间的延时(在window下没有该问题 可能是虚拟机造成的原因),
在PTAM的官方 Code下我没有进行延时和读取前几帧的操作,只是把虚拟机的USB改为3.0,便可以正常工作。
- 关于虚拟机下Linux的opencv获取摄像头图像问题
- linux下摄像头图像数据的获取
- linux下摄像头图像数据的获取
- Linux下opencv通过V4L获取摄像头图像的底层源码icvRetrieveFrameCAM_V4L
- 【OpenCV】获取摄像头图像
- 关于opencv摄像头图像显示 经常出现select timeout的问题
- OpenCV摄像头采集图像问题及DirectShow的使用
- 使用Linux的V4L2读取摄像头数据+Opencv图像处理
- OpenCV之获取摄像头,显示图像
- OpenCV 获取摄像头图像数据并显示
- opencv摄像头获取连续图像(一) :单目获取图像
- opencv摄像头获取连续图像(二): 双目获取图像
- 基于opencv网络摄像头在ubuntu下的视频获取
- OpenCV入门六:OpenCV打开摄像头并对摄像头获取的每一帧图像进行Canny算子边缘化提取操作
- 关于用opencv显示图像的问题
- opencv关于图像处理坐标的问题
- OpenCV摄像头视频的获取
- OpenCV摄像头视频的获取
- 51单片机 试验一 点亮你的第一颗LED
- MYSQL的binary解决mysql数据大小写敏感问题的方法
- NOIP第12讲需要注意的问题
- 期末总结
- React-Native开发规范
- 关于虚拟机下Linux的opencv获取摄像头图像问题
- spring Boot redis连接池配置,Spring Session配置
- 误删windows启动分区的修复方法
- 第三周项目4
- 【Container讲师专访】容器化技术在长安汽车中的实践
- Spring Cloud微服务架构实践与经验总结
- MySql-中-case-when-then-else-end-的用法
- About LOD calculation
- 技术分享连载(八十六)