码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 树莓派4B_OpenCv学习笔记10:调整视频帧大小


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

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

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

     Opencv 版本是4.5.1:

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

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

    目录

    调整视频帧大小:

    编写代码:

     效果展示:

    解决motion视频流卡顿问题:

    下载motion配置:

    更改配置:

    网上学习资料贴出:


    调整视频帧大小:

    编写代码:

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

     效果展示:

    发现像素确实变小了:

    解决motion视频流卡顿问题:

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

    下载motion配置:

    1. sudo apt-get update
    2. 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博客

     

  • 相关阅读:
    MySQL-索引详解(三)
    ubuntu中安装autogpt,python虚拟环境安装使用
    Demo29单词规律
    【c语言】指针和数组笔试题
    QT动态加载qss和rcc方式
    [题]宝物筛选 #单调队列优化
    Part2_扩展MATSIM_Subpart4_除个人车外的其他模式_第18章 公交路线图匹配半自动工具
    iOS 练习项目 Landmarks (三):详情页设计
    图片翻译成中文怎么弄?分享三个图片翻译小技巧
    SRM供应商关系管理系统解决方案
  • 原文地址:https://blog.csdn.net/qq_64257614/article/details/139718694
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号