概述
条件:OpenCV2.4.13+win10 64位笔记本
正常条件下使用OpenCV3书中的例子并不能成功运行出来,利用摄像头读取视频。
下面为在网上找到的第一种办法,亲测可行;
- #include <opencv2/opencv.hpp>
- #include <iostream>
- using namespace cv;
- using namespace std;
- string name="我的";
- int main()
- {
- VideoCapture capture; //声明视频读入类
- capture.open(0); //从摄像头读入视频 0表示从摄像头读入
- if (!capture.isOpened()) //先判断是否打开摄像头
- {
- cout<<"can not open";
- cin.get();
- return -1;
- }
- namedWindow(name);
- while (1) {
- Mat cap; //定义一个Mat变量,用于存储每一帧的图像
- capture>>cap; //读取当前帧
- if (!cap.empty()) //判断当前帧是否捕捉成功 **这步很重要
- imshow(name, cap); //若当前帧捕捉成功,显示
- else
- cout<<"can not ";
- waitKey(30); //延时30毫秒
- }
- return 0;
- }
但是第一帧并不能读出来,显示can not。原文链接为https://blog.csdn.net/u012005313/article/details/47451799
第二种方法:
- #include "cv.h"
- #include "highgui.h"
- int main(int argc, char** argv) {
- cvNamedWindow("win");
- CvCapture* capture = cvCreateCameraCapture(0);
- IplImage* frame = cvQueryFrame(capture);
- while(1) {
- frame = cvQueryFrame(capture);
- if(!frame) break;
- IplImage* out = cvCreateImage(cvGetSize(frame), frame->depth, 1);
- //cvCanny(frame, out, 100,100, 3);
- cvShowImage("win", out);
- cvReleaseImage(&out);
- char c = cvWaitKey(50);
- if(c==27) break;
- }
- cvReleaseCapture(&capture);
- cvDestroyWindow("win");
- return 0;
- }
第三种方法:这种方法注销了一行代码,可以仔细看一下就知道了//if(!frame) break;
- #include "cv.h"
- #include "highgui.h"
- int main(int argc, char** argv) {
- cvNamedWindow("win");
- CvCapture* capture = cvCreateCameraCapture(0);
- IplImage* frame;
- while(1) {
- frame = cvQueryFrame(capture);
- //if(!frame) break;
- cvShowImage("win", frame);
- char c = cvWaitKey(50);
- if(c==27) break;
- }
- cvReleaseCapture(&capture);
- cvDestroyWindow("win");
- return 0;
- }
最后
以上就是激动毛豆为你收集整理的OpenCV在笔记本上打不开摄像头的问题的全部内容,希望文章能够帮你解决OpenCV在笔记本上打不开摄像头的问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复