opencv--打开摄像头

本文介绍了一段使用C++和OpenCV从摄像头捕获并显示视频的代码示例。代码展示了如何初始化摄像头捕获设备,读取帧并显示视频,以及如何处理常见的错误,如资源暂时不可用。此外,还提供了编译方法的链接。
部署运行你感兴趣的模型镜像
#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
	//VideoCapture capture;
	//capture.open("./bike.avi");
	VideoCapture capture(0);
	//capture.set(CV_CAP_PROP_FRAME_WIDTH , 640);
	//capture.set(CV_CAP_PROP_FRAME_HEIGHT ,480);
	if(!capture.isOpened())
	{
		printf("[%s][%d]could not load video data...\n",__FUNCTION__,__LINE__);
		return -1;
	}

	Mat frame;
	while(capture.read(frame))
	{
		imshow("video-demo",frame);
		char c = waitKey(66);
		if(c == 27)
		{
			break;
		}
	}
	waitKey(0);
	return 0;
}

编译方法见:

https://blog.youkuaiyun.com/StruggleToLife/article/details/98480725

注意事项:

select timeout
VIDIOC_DQBUF: Resource temporarily unavailable

虚拟机自动重启,重新插拔(我这里刚开始重启后不行,后面重新插拔一下就行了)

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

### 使用 OpenCV-Python 打开并访问电脑摄像头 要通过 `opencv-python` 访问电脑上的摄像头,可以利用 `cv2.VideoCapture()` 方法。此方法允许指定设备索引来连接特定的摄像头硬件。以下是具体实现方式: #### 代码示例 以下是一个简单的 Python 脚本,用于打开默认摄像头并实时显示捕获的画面。 ```python import cv2 # 初始化 VideoCapture 对象,默认摄像头通常为索引 0 cap = cv2.VideoCapture(0) if not cap.isOpened(): print("无法找到摄像头设备") else: while True: ret, frame = cap.read() if not ret: print("未能成功读取帧") break # 显示当前帧画面 cv2.imshow('Camera Feed', frame) # 按下键盘 'q' 键退出循环 if cv2.waitKey(1) & 0xFF == ord('q'): break # 清理资源 cap.release() cv2.destroyAllWindows() ``` 上述脚本中,`cv2.VideoCapture(0)` 表示尝试连接第一个可用的摄像头设备[^3]。如果存在多个摄像头,则可以通过更改参数(如 `1`, `2` 等)来切换不同的设备。 --- #### 解决常见问题 1. **权限不足或驱动未安装** 如果遇到错误提示 `[ WARN:1] global ... terminating async callback` 或其他警告消息,可能是因为系统缺少必要的摄像头驱动程序或者没有授予应用程序足够的权限。建议检查操作系统设置中的隐私选项,确保已启用摄像头功能。 2. **环境配置冲突** 部分情况下,不同版本间的兼容性可能导致失败。例如,在某些 Anaconda 环境下运行时可能会出现问题。推荐重新创建虚拟环境,并按照官方指南安装最新稳定版库文件[^1]: ```bash conda create -n myenv python=3.10 conda activate myenv pip install opencv-python-headless ``` 3. **CSI/USB 设备支持** 当目标平台涉及嵌入式开发板(比如 NVIDIA Jetson Nano),需额外注意其专用接口标准(如 CSI)。此时应参照相关文档调整初始化逻辑[^2]: ```python gst_str = ("nvarguscamerasrc ! video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1 ! nvvidconv flip-method=0 ! video/x-raw, format=(string)BGRx ! videoconvert ! appsink") cap = cv2.VideoCapture(gst_str, cv2.CAP_GSTREAMER) ``` 4. **背景分离应用扩展** 若计划进一步处理采集的数据流,可引入背景减除算法提升效果[^4]。这有助于区分动态对象与静态场景之间的差异。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值