树莓派4B_OpenCv学习笔记10:调整视频帧大小

2024-06-16 22:12

本文主要是介绍树莓派4B_OpenCv学习笔记10:调整视频帧大小,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今日继续学习树莓派4B 4G:(Raspberry Pi,简称RPi或RasPi)

 本人所用树莓派4B 装载的系统与版本如下:

 版本可用命令 (lsb_release -a) 查询:

 Opencv 版本是4.5.1:

今日学习一下如何降低视频帧像素

文章提供测试代码讲解,整体代码贴出、测试效果图

目录

调整视频帧大小:

编写代码:

 效果展示:

解决motion视频流卡顿问题:

下载motion配置:

更改配置:

网上学习资料贴出:


调整视频帧大小:

编写代码:

# coding=utf-8
import cv2  # 打开摄像头,0通常是默认摄像头的索引  
cap = cv2.VideoCapture(0)  
# 设置目标分辨率  
target_resolution = (320, 240)  # 创建VideoWriter对象,指定输出视频的文件名、编码器、帧率、帧大小等  
fourcc = cv2.VideoWriter_fourcc(*'MJPG')  # 使用MJPG编码器  
out = cv2.VideoWriter('output_video.avi', fourcc, 20.0, target_resolution)if not cap.isOpened():  print("Error opening video stream or file")  
else:  frame_count = 0  # 初始化帧计数器  while True:  # 读取一帧图像  ret, frame = cap.read()  # 检查帧是否正确读取  if not ret:  print("Can't receive frame (stream end?). Exiting ...")  break  # 调整帧大小  resized_frame = cv2.resize(frame, target_resolution, interpolation = cv2.INTER_LINEAR)  # 写入新的视频文件  out.write(resized_frame)  # 显示图像  cv2.imshow('Video Stream_resized_frame', resized_frame)  # 等待键盘输入,如果按下'q'则退出循环  key = cv2.waitKey(1) & 0xFF  if key == ord('q'):  break  # 如果按下'c',则保存当前帧  elif key == ord('c'):  # 定义保存图片的文件路径和名称,包含递增的编号  # 使用04d来确保编号是四位数,并填充前导零  file_path = f'/home/pi/Pictures/your_image_{frame_count:04d}.jpg'  cv2.imwrite(file_path, frame)  print(f"Image saved successfully: {file_path}")  frame_count += 1  # 递增计数器  # 释放摄像头  cap.release()  # 关闭所有OpenCV窗口  cv2.destroyAllWindows()

 效果展示:

发现像素确实变小了:

解决motion视频流卡顿问题:

SSH传输视频卡顿取决于网络速度,这里的步骤解决不了SSH远程连接的视频流卡顿问题,只能连接显示器运行Python脚本

下载motion配置:

sudo apt-get update
sudo apt-get install motion

把文件中 "start_motion_daemon=no" 改为yes 

sudo nano /etc/default/motion

更改配置:

sudo nano /etc/motion/motion.conf

按下ctrl+w进行搜索:

搜素 # Start in daemon (background) mode and release terminal (default: off)

将off改为on

搜素 # Image width (pixels). Valid range: Camera dependent, default: 320

根据需要更改摄像头宽度高度:

搜素  # Maximum number of frames to be captured per second.

根据需要更改帧率,50左右为佳,之前卡慢是因为帧率为2...

搜素  # Restrict stream connections to localhost only (default: on)

将on改为off

搜素  # Maximum framerate for stream streams (default: 1)

改为100或者其余较大的数

最后按下ctrl+o 然后回车 保存,ctrl+x退出!

网上学习资料贴出:

树莓派4B motion摄像头(解决卡顿)相关配置_树莓派摄像头拍照延时高-CSDN博客

【CV】树莓派+OpenCV-python解决摄像头分辨率及帧率过低无法调整问题_树莓派如何设置摄像头的分辨率-CSDN博客

Python+Opencv读取高帧率USB摄像头问题_树莓派4b摄像头帧率能不能到120帧-CSDN博客

 

这篇关于树莓派4B_OpenCv学习笔记10:调整视频帧大小的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1067692

相关文章

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

java获取图片的大小、宽度、高度方式

《java获取图片的大小、宽度、高度方式》文章介绍了如何将File对象转换为MultipartFile对象的过程,并分享了个人经验,希望能为读者提供参考... 目China编程录Java获取图片的大小、宽度、高度File对象(该对象里面是图片)MultipartFile对象(该对象里面是图片)总结java获取图片

Java如何获取视频文件的视频时长

《Java如何获取视频文件的视频时长》文章介绍了如何使用Java获取视频文件的视频时长,包括导入maven依赖和代码案例,同时,也讨论了在运行过程中遇到的SLF4J加载问题,并给出了解决方案... 目录Java获取视频文件的视频时长1、导入maven依赖2、代码案例3、SLF4J: Failed to lo

树莓派启动python的实现方法

《树莓派启动python的实现方法》本文主要介绍了树莓派启动python的实现方法,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、RASPBerry系统设置二、使用sandroidsh连接上开发板Raspberry Pi三、运

Python实现多路视频多窗口播放功能

《Python实现多路视频多窗口播放功能》这篇文章主要为大家详细介绍了Python实现多路视频多窗口播放功能的相关知识,文中的示例代码讲解详细,有需要的小伙伴可以跟随小编一起学习一下... 目录一、python实现多路视频播放功能二、代码实现三、打包代码实现总结一、python实现多路视频播放功能服务端开

Python实现视频转换为音频的方法详解

《Python实现视频转换为音频的方法详解》这篇文章主要为大家详细Python如何将视频转换为音频并将音频文件保存到特定文件夹下,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果5. 注意事项

C#中图片如何自适应pictureBox大小

《C#中图片如何自适应pictureBox大小》文章描述了如何在C#中实现图片自适应pictureBox大小,并展示修改前后的效果,修改步骤包括两步,作者分享了个人经验,希望对大家有所帮助... 目录C#图片自适应pictureBox大小编程修改步骤总结C#图片自适应pictureBox大小上图中“z轴

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

Python视频处理库VidGear使用小结

《Python视频处理库VidGear使用小结》VidGear是一个高性能的Python视频处理库,本文主要介绍了Python视频处理库VidGear使用小结,文中通过示例代码介绍的非常详细,对大家的... 目录一、VidGear的安装二、VidGear的主要功能三、VidGear的使用示例四、VidGea

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规