树莓派4B_OpenCv学习笔记4:测试摄像头_imread加载显示图像_imwrite保存图片

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

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

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

Opencv 版本是4.5.1:

今日对之前的测试CSI摄像头函数进行一些理解说明,

然后就尝试使用 imread 方法读取照片,imwrite方法保存图片

目录

imread加载显示图像:

编写程序:

运行程序与结果:

imread('Path',flag)函数详解:

imwrite方法保存图片:

编写程序:

运行程序与结果:

网上学习网址贴出:


imread加载显示图像:

编写程序:

编写一个文件名为“Load_img.py”的python程序如下:

# coding=utf-8
import cv2  # 创建一个窗口,并允许调整窗口大小  
cv2.namedWindow('image', cv2.WINDOW_NORMAL)  # 读取图片,第二个参数0表示以灰度并以1/4大小模式读取  
img = cv2.imread('/home/pi/Pictures/Load_test.jpg', 33)  # 如果图片读取成功,则显示图片  
if img is not None:  cv2.imshow('image', img)  # 等待任意按键按下  key = cv2.waitKey(0)  # 如果按下的是'q'键,则退出程序  if key & 0xFF == ord('q'):  cv2.destroyAllWindows()  
else:  print("Load_Failed...")  # 无论是否按下'q'键,都需要在程序结束前销毁窗口  
# 但由于我们在上面的if块中已经销毁了窗口(如果按下'q'),这里不需要再次销毁  
# 如果上面的if块没有执行(即图片未加载),则这里也不需要销毁窗口  
# 因为没有窗口被创建

在读取图片代码处需要注意文件路径以及图片类型名称:

代码中我是加载了位于/home/pi/Pictures/ 目录下的 Load_test.jpg 图片:

这个可以自己随便拍张图片放在指定目录来测试,目录与图片名称填完整正确了就可以

其次就是文件头的这个注释不可去除:

程序包含了一些非UTF-8编码的字符,这是Python解释器在读取文件时声明文件编码的注释

运行程序与结果:

使用 dos2unix 工具:

程序包含了一些非UTF-8编码的字符所以需要用工具进行一些转换:

如果未安装:

sudo apt-get update  
sudo apt-get install dos2unix

如果安装过了:

dos2unix <文件名>.py

运行结果:

python3 Load_img.py

imread('Path',flag)函数详解:

以下是 imread 函数中常用的枚举 flag 值及其具体意义:

  1. IMREAD_UNCHANGED (-1):
    • 如果设置,返回加载的图像原样(如果有 alpha 通道,则保留;否则,会裁剪)。
  2. IMREAD_GRAYSCALE (0):
    • 如果设置,始终将图像转换为灰度图像并返回。
  3. IMREAD_COLOR (1):
    • 如果设置,返回彩色图像。这是默认参数,图像的透明度会被忽略。
  4. IMREAD_ANYDEPTH (2):
    • 如果设置,并且载入的图像深度为 16 或 32 位,则返回对应深度的图像;否则,转换为 8 位图像再返回。
  5. IMREAD_ANYCOLOR (4):
    • 这个标志的具体作用在参考文章中未明确说明,但在某些上下文中,它可能与颜色空间的读取方式有关。
  6. IMREAD_LOAD_GDAL (8):
    • 如果设置,使用 GDAL 驱动程序加载图像。GDAL 是一个用于栅格地理空间数据格式的库。
  7. IMREAD_REDUCED_GRAYSCALE_2 (16):
    • 如果设置,返回 1/2 大小的灰度图像。
  8. IMREAD_REDUCED_COLOR_2 (17):
    • 如果设置,返回 1/2 大小的彩色图像。
  9. IMREAD_REDUCED_GRAYSCALE_4 (32):
    • 如果设置,返回 1/4 大小的灰度图像。
  10. IMREAD_REDUCED_COLOR_4 (33):
    • 如果设置,返回 1/4 大小的彩色图像。
  11. IMREAD_REDUCED_GRAYSCALE_8 (64):
    • 如果设置,返回 1/8 大小的灰度图像。
  12. IMREAD_REDUCED_COLOR_8 (65):
    • 如果设置,返回 1/8 大小的彩色图像。
  13. IMREAD_IGNORE_ORIENTATION (128):
    • 如果设置,在读取图像时忽略 EXIF 中的方向信息。

imwrite方法保存图片:

编写程序:

这个程序可以做到打开摄像头,实时显示捕获视频流,

按下键盘‘C’可以截获保存一张照片在路径‘/home/pi/Pictures/’(注意要有这个文件夹Pictures),图片名称为‘your_image_0000.jpg’(0000是图片编号;会递增)

按下键盘‘Q’键就能退出这个程序了

# coding=utf-8
import cv2  # 打开摄像头,0通常是默认摄像头的索引  
cap = cv2.VideoCapture(0)  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  # 显示图像  cv2.imshow('Video Stream', 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()

运行程序与结果:

发现确实每次按下‘C’就保存一张图片并进行了终端提示:

网上学习网址贴出:

3-3 如何通过OpenCV加载显示图片_哔哩哔哩_bilibili

3-5 如何通过OpenCV保存文件_哔哩哔哩_bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/23709.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

降噪是什么意思?视频如何降噪?一文了解全部

在视频制作的过程中&#xff0c;我们经常会遇到噪音问题&#xff0c;这些噪音可能来自拍摄环境、录制设备或其他源头。然而&#xff0c;对于初学者来说&#xff0c;降噪是什么意思&#xff0c;以及如何有效地在视频中进行降噪可能是一些疑惑的问题。本文将深入解释降噪的概念&a…

【算法】深入浅出爬山算法:原理、实现与应用

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

echarts学习: 绘制双y轴折线图

前言 我们公司项目中的折线图大都是双y轴的&#xff0c;因为这些图表往往需要同时展示水位和流量这两种不同单位的数据&#xff0c;因此如何绘制双y轴折线图就是就是我所面临的首要问题。 1.如何绘制双y轴 将yAxis属性的值设置为一个数组&#xff0c;并在数组中添加两个axis对…

AI辅助论文:探索AI查重与AI降重技术

在科研领域&#xff0c;AI写作工具如同新一代的科研利器&#xff0c;它们能够极大提高文献查阅、思路整理和表达优化的效率&#xff0c;本质上促进了科研工作的进步。AI写作工具不仅快速获取并整理海量信息&#xff0c;还帮助我们精确提炼中心思想&#xff0c;显著提升论文写作…

0606 作业

#include <stdio.h> #include <string.h>typedef struct usr{char unm[21];char pwd[21]; }user;int main(int argc, const char *argv[]) {FILE* userfilefopen("./user_tible.txt","r");printf("输入username:");user u;scanf(&qu…

人工智能在肿瘤预后预测中的最新研究进展|顶刊精析·24-06-07

小罗碎碎念 今天要分享的文献主题&#xff0c;大家一定非常熟悉&#xff0c;因为绝大多数AI4cancer的文章都会提到它——预后预测&#xff0c;所以今天的文献主题是——人工智能肿瘤预后预测。 在正式开始分享之前&#xff0c;我想先带着大家梳理两个问题。解决了以下两个问…

【Python】实现极致:克服PyInstaller打包挑战,解决libpython3.10.so.1.0库丢失难题

【Python】实现极致&#xff1a;克服PyInstaller打包挑战&#xff0c;解决libpython3.10.so.1.0库丢失难题 大家好 我是寸铁&#x1f44a; 总结了一篇【Python】实现极致&#xff1a;克服PyInstaller打包挑战&#xff0c;解决libpython3.10.so.1.0库丢失难题✨ 喜欢的小伙伴可以…

ai智能全自动批量剪辑软件神器,让视频创作变得简单!

随着科技的飞速发展&#xff0c;人工智能技术在各个领域都取得了突破。在视频制作领域&#xff0c;AI智能全自动批量剪辑软件神器的出现&#xff0c;为视频创作者带来了前所未有的便利。接下来咱们详细介绍这款软件的特点和优势&#xff0c;以及它如何让视频创作变得更加简单。…

【网络安全的神秘世界】Kali安装中文输入法

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 今天就手把手教你如何在kali中安装和配置输入法 首先&#xff0c;打开终端&#xff0c;输入下面这行代码&#xff1a; # sudo apt install ibus ibus-pi…

【机器学习】Python与深度学习的完美结合——深度学习在医学影像诊断中的惊人表现

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、引言二、深度学习在医学影像诊断中的突破1. 技术原理2. 实际应用3. 性能表现 三、深度学习在医学影像诊断中的惊人表现1. 提高疾病诊断准确率2. 辅助制定治疗方案 四、深度学习对医疗行业的影响和推动作用 一、引言 随着…

网络安全领域六大顶级会议介绍:含会议介绍、会议地址及会议时间和截稿日期

**引言&#xff1a;**从事网络安全工作&#xff0c;以下六个顶会必须要知道&#xff0c;很多安全的前沿技术都会在如下会议中产生与公开&#xff0c;如下会议发表论文大部分可以公开下载。这些会议不仅是学术研究人员展示最新研究成果的平台&#xff0c;也是行业专家进行面对面…

[洛谷] 刷题栈 队列

目录 1.后缀表达式 2.表达式括号匹配 3.表达式求值 4.表达式的转换 5.机器翻译 1.后缀表达式 后缀表达式 - 洛谷 #include<iostream> #include<cstdio> using namespace std;int stk[100]; // 用于存储操作数的栈 int index 0; // 栈顶索引int main() {c…

C++开发基础之初探CUDA计算环境搭建

一、前言 项目中有使用到CUDA计算的相关内容。但是在早期CUDA计算环境搭建的过程中&#xff0c;并不是非常顺利&#xff0c;编写此篇文章记录下。对于刚刚开始研究的你可能会有一定的帮助。 二、环境搭建 搭建 CUDA 计算环境涉及到几个关键步骤&#xff0c;包括安装适当的 C…

分析示例 | Simufact焊接工艺仿真变形精确预测汽车结构

导语 焊接是汽车制造过程中一个关键环节&#xff0c;白车身、发动机、底盘和变速箱等都离不开焊接工艺的应用&#xff0c;主要涉及气保焊、电阻点焊、激光焊、电子束焊等多种焊接工艺。由于汽车车型众多、成形结构复杂、汽车制造质量、效率、成本等方面的综合要求。如何高效、…

杰理AC632N提升edr的hid传输速率, 安卓绝对坐标触摸点被识别成鼠标的修改方法

第一个问题: 首先修改edr的hid传输速率.修改你的板级配置,里面的一个地方给注释掉了,请打开那个注释就能提升edr的hid传输效率了 第二个问题: 修改632n系别把触摸板的hid报告描述符识别成鼠标点,修改如下: 注释掉上面的pnp,改成下面的

element plus的容器组件

element-plus的容器组件主要有el-container,el-aside,el-header,el-main,el-footer,后面4个组件其父组件必须是el-container。 el-container采用flex布局&#xff0c;如果其子元素包含el-header或el-footer时会采用垂直布局&#xff0c;否则会采用水平布局&#xff0c;可设置其…

教程 | Navicat 17 管理连接新方法

Navicat 17 提供了比以往更多的连接数据库实例的方式。除了传统的连接字符串方式以外&#xff0c;Navicat 17 还支持 URI 连接&#xff0c;无论身在何处&#xff0c;都可以轻松地通过 URI 访问对象。另外&#xff0c;还有一个新的管理连接功能&#xff0c;即允许你通过一个以用…

大数据揭秘

起源 不管是国内&#xff0c;国外的招聘目前数据分析工程师&#xff0c;或者是大数据工程师我感觉都是处于启蒙阶段&#xff0c;对于数据分析或者大数据没有什么体系技术栈一说&#xff0c;相比于前后端&#xff0c;除了高端互联网企业其他的企业招数据分析工程师我认为目前都…

【全开源】房屋出租出售预约系统(FastAdmin+ThinkPHP+Uniapp)

房屋出租出售预约系统&#xff1a;一站式解决房产交易难题 一款基于FastAdminThinkPHPUniapp开发的房屋出租出售预约系统&#xff0c;支持小程序、H5、APP&#xff0c;包含房客、房东(高级授权)、经纪人(高级授权)三种身份。核心功能有&#xff1a;新盘销售、房屋租赁、地图找…

Python 技巧分享:NEF 文件的元数据提取

介绍 随着摄影技术的不断发展&#xff0c;NEF 文件作为尼康相机的 RAW 格式文件&#xff0c;因其包含丰富的图像数据和元数据&#xff0c;备受摄影爱好者和专业摄影师的青睐。提取 NEF 文件中的元数据对照片管理、分析及处理具有重要意义。本文将介绍如何使用 Python 技术&…