opencv - 摄像头(项目)

使用OpenCV 打开摄像头 在这个示例中,我们使用了一个无限循环来不断读取摄像头的帧。如果返回值为True,表示读取成功,我们就使用cv2.imshow()函数显示这一帧图像。如果返回值为False,表示读取失败,我们就跳过这一帧。接下来,我们需要导入cv2模块,这是OpenCV的主要接口。然后,我们使用cv2.VideoCapture()函数打开摄像头。这个函数返回一个VideoCapture对象,我们可以使用这个对象的read()方法来捕获一帧图像。如果按下了’q’键,我们就跳出循环,释放摄像头资源,并关闭所有窗口。 阅读详情

前一段时间领导让弄一个A柱的一个小功能 , 遇到了不少的难题(毕竟没有接触过 , 当时听见opencv都一脸懵逼) , 不过最后经过百般的努力 , 终于基本的功能已经实现啦 !

当然能定有错误的地方 , 也希望大家能够指出 !


以下面代码实现 :

     摄像头的放大

    摄像头的缩小

    摄像头的旋转

    摄像头的裁剪

    摄像头的数据保存


#include "opencv2/core.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/opencv.hpp"

using namespace cv;
//取中间区域
int up_down_move = 190;
int left_right_move = 0;
//摄像头显示大小
int captureWidth = 1280;
int captureHeight = 720;
//裁剪大小
int width = 1280;
int height = 366;
// 旋转角度  
double angle = 0;  
// 缩放尺度  
double scale = 1.0; 

int main()
{
	
	int mode;
	//用来存放读取的视频序列
	Mat frame;
	//定义一个用来控制读取视频循环结束的变量  
	bool stop = false;
	int key;
	printf("请选择摄像头 '0' 内置 '1' 外置");
    	scanf("%d", &mode);
	//创建VideoCapture对象
	VideoCapture capture(mode);
	//判断是否打开摄像头
	if (capture.isOpened())
        {
		printf("打开成功!"); 
		FileStorage read("parameter.yml", FileStorage::READ);
		if(read.isOpened())
		{
			angle = (int)read["angle"];
			scale = (double)read["scale"];
			up_down_move = (int)read["up_down_move"];
			left_right_move = (int)read["left_right_move"];
		}
		read.release();
	}
	else
	{
		printf("打开失败!"); 
	}
	cvNamedWindow("Carmera");
 	cvMoveWindow("Carmera", 0, 0);
	capture.set(CV_CAP_PROP_FRAME_WIDTH, captureWidth);  
    	capture.set(CV_CAP_PROP_FRAME_HEIGHT, captureHeight);
	//获取帧率
    	//double rate = capture.get(CV_CAP_PROP_FPS);  
	//两帧间的间隔时间
    	//int delay = 1000/rate;
	//滤波器的核
	int kernel_size = 3;  
    	Mat kernel = Mat::ones(kernel_size,kernel_size,CV_32F)/(float)(kernel_size*kernel_size);  
    	while (!stop)
    	{
		//读取frame
        	capture >> frame;
		if(frame.empty())break;
		key = cvWaitKey(2);	
		if(key==1048603)
		{
			stop = true;
			break;		
		}
		switch(key)
        	{	
			//上
			case 1048695:  
				up_down_move -= 10;
				if(up_down_move <= 0)
				up_down_move = 0;
			break;  
			//下
            		case 1048691:  
				up_down_move += 10;
				if(up_down_move >= frame.rows*0.5)
				up_down_move = (frame.rows*0.5)-10;
			break;  
			//左
            		case 1048673:  
				left_right_move -= 10;
				if(left_right_move <= 0)
				left_right_move = 0;
			break;  
			//右
            		case 1048676:  
				left_right_move ++;
				if(width == captureWidth)
				{
					left_right_move	= 0;
				}
				else
				{
					if(left_right_move >= frame.cols*0.5)
					left_right_move=frame.cols*0.5; 
				}
			break;  
			//保存
			case 1048687:
			{
				FileStorage write("parameter.yml", FileStorage::WRITE);
				write << "angle" << angle;
				write << "scale" << scale;
				write << "up_down_move" << up_down_move;
				write << "left_right_move" << left_right_move;
				write.release();
			}
			break;
			//放大
			case 1048637:
				scale+=0.1;
				if(scale >=10)
				scale = 10;
			break;
			//缩小
			case 1048621:
				scale-=0.1;
				if(scale<=1)
				scale = 1;
			break;
			//旋转+
			case 1048620:
				angle++;
			break;
			//旋转-
			case 1048622:
				angle--;
			break;
			//复位
			case 1048690:
				up_down_move = 190;
				left_right_move = 0;
				angle = 0;  
				scale = 1.0; 
			break;
        	}
		//裁剪
		Rect rect(left_right_move,up_down_move,width, height);
		Mat temp(frame, rect);
		//加滤波程序 
		filter2D(temp,temp,-1,kernel);
//-------------------------------------------------------------------------------------
		cv::Point2f center = cv::Point2f(temp.cols / 2, temp.rows / 2);
		cv::Mat rotateMat;   
    		rotateMat = cv::getRotationMatrix2D(center, angle, scale);  
    		cv::Mat rotateImg;  
    		cv::warpAffine(temp, rotateImg, rotateMat, temp.size());
		imshow("Carmera",rotateImg);
//-------------------------------------------------------------------------------------
    	}
	cvDestroyWindow("Carmera");
	capture.release();
	frame.release();
	return 0;
}



效果图 :




源代码文件下载 :

点击打开链接


如果有什么问题请回复 !

qt与opencv项目1打开摄像头 qt项目1打开摄像头.pro配置在后面添加gui设计mainwindow.cpp运行结果 .pro配置在后面添加 INCLUDEPATH += /usr/local/include \ /usr/local/include/opencv /usr/local/include/opencv2 LIBS += /usr/local/lib/libopencv_* \ gui设计 添加一个QLabel和两个QPushButton mainwin 阅读详情

相关推荐

避坑指南:RK3588上Qt+OpenCV项目移植,解决USB摄像头采集的三大常见问题

本文详细解析了在RK3588开发板上移植Qt+OpenCV项目时,USB摄像头采集的三大常见问题及解决方案。从设备权限设置、视频流格式兼容性到OpenCV编译优化和Qt项目配置,提供了实战经验与性能调优技巧,帮助开发者高效解决嵌入式视觉项目中的技术难题。

weixin_42529328的博客 94

OpenCV 视频处理(关于摄像头和视频文件的读取、显示、保存等等)

opencv 关于视频的操作

Henry的博客 1万+

Qt与OpenCV联合开发摄像头实时视频捕捉项目

在现代图像处理与计算机视觉应用中,Qt与OpenCV的联合开发已成为一种高效且广泛采用的技术组合。Qt作为一套成熟的C++图形界面开发框架,提供了丰富的UI组件和跨平台支持;而OpenCV则专注于图像处理与视频分析,拥有强大的算法库。二者结合,不仅能够实现复杂的图像处理逻辑,还能快速构建交互式图形界面,极大提升了开发效率和用户体验。本章将从基础概念入手,介绍Qt与OpenCV各自的特点,并深入探讨它们在联合开发中的协同优势,为后续构建完整的视频图像处理应用打下坚实基础。

weixin_36012152的博客 941

OpenCV(视频加载与摄像头使用)

【代码】OpenCV(视频加载与摄像头使用)

qq_57594025的博客 1174

MFC结合OpenCV实现摄像头实时视频采集项目

htmltable {th, td {th {pre {简介:本项目基于MFC(Microsoft Foundation Classes)与OpenCV(Open Source Computer Vision Library)技术,构建了一个可在Windows平台运行的摄像头视频实时采集系统。通过MFC的图形界面框架和PICTURE控件,结合OpenCV的图像捕获与处理功能,实现了摄像头视频流的获取、格式转换与动态显示。

weixin_29363791的博客 1010

Oracle 11g版本下载及安装超详细教程图解

新手Oracle安装教程

weixin_43738344的博客 10万+

OpenCV调用摄像头 , 人脸检测demo

github博客传送门 csdn博客传送门 环境: 安装OpenCV: conda install opencv 或 pip install opencv 安装PIL: conda install pillow pip install pillow 效果: 所需文件: 下载链接: 所需文件下载链接 本来是想不收积分的 , 不知道为什么不能选择 0 积分了. 特此我将xml文件的内容贴...

weixin_30642869的博客 412

[VisionPro] CogPMAlignTool 工具详解

[VisionPro] [CogPMAlignTool] [模板匹配]

weixin_43163656的博客 1万+

opencv调用摄像头

一、读取图像 img=cv2.imread("Resources/lena.jpg") cv2.imshow("Output",img) cv2.waitKey(0) 二、读取视频 cap=cv2.VideoCapture("Resources/video.mp4") while True: success,img=cap.read() cv2.imshow("Video",img) if cv2.waitKey(1)&0xFF==ord('q'):

LYiiiiiii的博客 1万+

复合材料RVE建模与力学性能分析实战指南

代表体积元(RVE)建模是复合材料多尺度分析的核心技术,通过建立微观结构与宏观性能的定量关联,可准确预测材料力学行为。本文基于ABAQUS平台,详细解析三材料(纤维/基体/界面相)RVE建模全流程,包括参数化几何建模、周期性网格划分策略、材料属性定义技巧等关键技术环节。针对碳纤维增强环氧树脂等典型复合材料,提供网格控制参数建议和材料参数参考表,并重点说明周期性边界条件的实现方法与验证标准。通过Python脚本自动化处理和优化分析流程,可显著提升计算效率,为复合材料设计提供可靠仿真依据。

weixin_34062469的博客 548

远程桌面连接失败?手把手教你解决CredSSP加密Oracle漏洞(Win10/Win11通用)

本文详细解析了Windows远程桌面连接因CredSSP加密Oracle漏洞安全更新导致的“身份验证错误”问题。文章从原理入手,提供了通过组策略编辑器(适用于专业版)和注册表编辑器(适用于家庭版)两种核心解决方案,指导用户将安全策略调整为推荐的“缓解”模式,以在保障安全的前提下恢复连接,并给出了高级脚本处理与安全最佳实践。

u6v7w8x的博客 724

opencv打开多个摄像头示例代码:项目推荐

opencv打开多个摄像头示例代码:项目推荐 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在现代计算机视觉领域,opencv无疑是一个强大的开源库,它提供了丰富的图像和视频处理功能。今天,我将为您介绍一个实用的opencv项目 —— opencv打开多个摄像头示例代码。此项目基于opencv2.4.6版本和vc2008编译环境,旨在帮助开发者理解和掌握如何同时使用多...

gitblog_06758的博客 1065

BDD测试之Behave使用入门

BDD测试(Behavior-Driven Development Testing)是一种基于“行为驱动开发”(BDD)理念。

想要成为酷盖但是失败的小明 580

基于QT5.12.2 + opencv + 海康sdk 设计的网络摄像头监控项目

本文基于海康自带的sdk包和opencv使用qt创建一个加有深度学习功能的海康网络摄像头项目(使用opencv的目的是对采用自行回流的方式获取到的摄像机画面进行处理)最主要的调用海康网络摄像头的代码已经开源出来了,如果还想要paddle推理部分的代码,或者整个项目可以私信作者。

qq_46019455的博客 1041

瑞芯微Android固件修改实战:从解包到root提权完整流程(附工具包)

本文详细解析了瑞芯微Android固件深度定制全流程,涵盖从固件包解包、系统镜像修改到植入root提权与分区调整的实战步骤。通过工具链操作与原理剖析,指导开发者安全实现系统精简、权限获取及存储扩容,最终完成固件重新打包与刷机验证,适用于追求设备完全控制权的技术爱好者。

ujm56789012的博客 697

手把手教你完成YOLOv8 PyQt5和PySide6目标检测界面搭建,前台系统+后台管理系统开发实战,可用于大论文凑工作量或毕设必备,全网最详细教程

目标检测是计算机视觉中的重要任务,广泛应用于安防监控、自动驾驶、智能家居等领域。YOLO系列模型由于其高效的检测速度和较高的准确率,成为目标检测任务的首选算法之一。本项目结合 YOLOv8 与 PyQt5,构建了一个图形化界面,便于用户进行目标检测的操作和展示,实现对图片、视频和摄像头的实时目标检测,不仅可以用于大论文的工作量展示,还可以作为毕业设计。支持目标检测、目标分割等模型进来检测

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1万+

OpenCV-PyQT项目实战(11)项目案例07:摄像头操作与拍摄视频

本项目基于 PyQt5 GUI 实现摄像头操作与拍摄实时视频。使用 OpenCV处理摄像头设备进行解码获得图像帧,然后用 QTime 定时器控制 QLabel 中的图像更新,使用按钮控制摄像画面的移动。

youcans的博客 4793

YOLO26改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进

1️⃣ 什么!不知道如何改进模型⁉️ 本专栏已更新260多种不同的改进方法,所使用并改进的每一个模块均包含详细的模块分析、原理讲解、个人总结、多种改进方式以及完整的修改流程,所有改进100%可直接运行,性价比极高。2️⃣ 找不到合适的模块⁉️ 所有改进点均为近三年顶会,顶刊提出的先进算法,将其融入到中,并进行二次创新,新颖度高,创新度高,能够适应不同的任务场景。3️⃣ 不确定自己改进的步骤、结果是否正确⁉️ 订阅专栏即可进群享受模型训练、模型改进、论文写作、投稿选刊,从入门到论文的各种答疑内容,非常适合新手

Limiiiing的博客 6336

探索视觉之旅:基于QT5的OpenCV摄像头视频采集与显示项目解析

探索视觉之旅:基于QT5的OpenCV摄像头视频采集与显示项目解析 去发现同类优质开源项目:https://gitcode.com/ 在数字时代,视觉处理技术日益成为连接现实与虚拟世界的桥梁。今天,我们要向您推荐一个融合了两大业界强者的开源项目——“基于QT5的OpenCV摄像头视频采集与显示”。该项目巧妙地结合了QT5的强大界面构建能力和OpenCV的图像处理功能,为开发者们打开了一扇通往实时视...

gitblog_09814的博客 854

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

树莓派CSI摄像头实战:用Picamera2轻松玩转OpenCV视觉项目

相比USB摄像头,CSI接口的专用摄像头具有更低的延迟和更高的稳定性。Picamera2作为官方推荐库,能充分发挥树莓派专用摄像头的硬件特性,其底层基于libcamera项目,提供了比传统PiCamera更现代的API设计。默认BGR格式的帧可直接用于OpenCV处理,但若需在Jupyter等环境中显示,需通过bgr8_to_jpeg函数转换为JPEG字节流。其内置的Jupyter Notebook支持直接运行修改代码,一键部署功能还能将你的视觉项目生成可分享的演示链接,特别适合教学演示和原型验证。

FrostfirePanther89的博客 1086

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

探索多通道摄像头画面显示与缩放的利器:Qt+OpenCV项目推荐

探索多通道摄像头画面显示与缩放的利器:Qt+OpenCV项目推荐 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在现代计算机视觉和监控系统中,多通道摄像头画面的实时显示与交互操作是一个常见且重要的需求。为了满足这一需求,我们推荐一个基于Qt和OpenCV的开源项目——“Qt+OpenCV 多通道摄像头画面显示与缩放”。该项目提供了一个功能强大的程序,能够同时显示多个U...

gitblog_09796的博客 514

OpenCV(项目)人脸检测(图片、摄像头)

一、基础理论 我们使用机器学习的方法完成人脸检测,首先需要大量的正样本图像(面部图像)和负样本图像〈不含面部的图像)来训练分类器。我们需要从其中提取特征。下图中的 Haar特征会被使用,就像我们的卷积核,每一个特征是一个值,这个值等于黑色矩形中的像素值之和减去白色矩形中的像素值之和。 1、Haar分类算法 Haar特征: (核) (切片) Haar特征值反映了图像的灰度变化情况。例如︰脸部的一些特征能由矩形特征简单的描述,眼睛要比脸颊颜色要深,鼻...

great_yzl的博客 6万+

jetson nano opencv 打开 CSI摄像头_项目实战:Qt+OpenCV激光射击游(识别激光、识别圆)...

若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.youkuaiyun.com/qq21497936原博主博客导航:https://blog.youkuaiyun.com/qq21497936/article/details/102478062本文章博客地址:https://blog.youkuaiyun.com/qq21497936/article/details/106647346红胖子(红模仿)的博文...

weixin_39823299的博客 577

✨ 我的第一个图像处理项目:用 OpenCV 实现摄像头实时边缘检测与模式切换

作为一名正在学习计算机视觉的学生,我最近完成了第一个图像处理小项目:👉 使用实现了一个可以实时处理摄像头画面、边缘检测、灰度转换,还能按键切换不同模式并保存截图的小工具。这是我学习图像处理的第一步,也让我对图像“变换”和实时计算有了更直观的认识。这是我学习计算机视觉路上的第一步,虽然功能不复杂,但我学会了:如何打开摄像头并逐帧读取图像如何通过键盘交互切换模式图像处理的基本流程:灰度 → 模糊 → 边缘提取如何用cv.putText在图像上叠加信息如何计算和显示实时帧率(FPS)

m0_71232343的博客 559

C# winform项目使用OpenCv调用电脑本机摄像头

配置 新建一个winform项目 打开nuget管理面板 在浏览中搜索opencvsharp 勾选本解决方案然后安装即可 在窗口中添加一个按钮 和 一个pictureBox控件 安装完成后 添加这四个命名空间 using OpenCvSharp; using OpenCvSharp.Blob; using OpenCvSharp.Extensions; using OpenCvSharp.UserInterface; 然后 按钮添加一个 click事件 在事件中添加下列代码 var capt

小何程序员的博客 9103

项目实战:Qt+OpenCV操作摄像头拍照、调节参数和视频录制

若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.youkuaiyun.com/qq21497936 本文章博客地址:https://blog.youkuaiyun.com/qq21497936/article/details/102993007 目录 需求 原理 注意 相关博客 Demo:cameraTool v1.0.0 运行效果 下载地址 核心代码 打开摄像头代码 ...

长沙红胖子 Qt・西安|省级科研团队从业背景,深耕双一流体系高精尖技术配套研发|剥离高精尖机理,沉淀高端特种行业领域 Qt 工程化落地经验|博文仅分享通用技术总结,输出公开普适工程思路。 5万+
上一篇: openCv - 摄像头标定(已运行)
下一篇: Android各控件绚丽Dome下载
有志青年L
博客等级 码龄10年 30粉丝 59原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值