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

本文主要是介绍树莓派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

这篇关于树莓派4B_OpenCv学习笔记4:测试摄像头_imread加载显示图像_imwrite保存图片的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

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

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

基于WinForm+Halcon实现图像缩放与交互功能

《基于WinForm+Halcon实现图像缩放与交互功能》本文主要讲述在WinForm中结合Halcon实现图像缩放、平移及实时显示灰度值等交互功能,包括初始化窗口的不同方式,以及通过特定事件添加相应... 目录前言初始化窗口添加图像缩放功能添加图像平移功能添加实时显示灰度值功能示例代码总结最后前言本文将

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

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

使用Python将长图片分割为若干张小图片

《使用Python将长图片分割为若干张小图片》这篇文章主要为大家详细介绍了如何使用Python将长图片分割为若干张小图片,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果1. Python需求

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

SpringBoot项目删除Bean或者不加载Bean的问题解决

《SpringBoot项目删除Bean或者不加载Bean的问题解决》文章介绍了在SpringBoot项目中如何使用@ComponentScan注解和自定义过滤器实现不加载某些Bean的方法,本文通过实... 使用@ComponentScan注解中的@ComponentScan.Filter标记不加载。@C

springboot 加载本地jar到maven的实现方法

《springboot加载本地jar到maven的实现方法》如何在SpringBoot项目中加载本地jar到Maven本地仓库,使用Maven的install-file目标来实现,本文结合实例代码给... 在Spring Boothttp://www.chinasem.cn项目中,如果你想要加载一个本地的ja

最好用的WPF加载动画功能

《最好用的WPF加载动画功能》当开发应用程序时,提供良好的用户体验(UX)是至关重要的,加载动画作为一种有效的沟通工具,它不仅能告知用户系统正在工作,还能够通过视觉上的吸引力来增强整体用户体验,本文给... 目录前言需求分析高级用法综合案例总结最后前言当开发应用程序时,提供良好的用户体验(UX)是至关重要

opencv实现像素统计的示例代码

《opencv实现像素统计的示例代码》本文介绍了OpenCV中统计图像像素信息的常用方法和函数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 统计像素值的基本信息2. 统计像素值的直方图3. 统计像素值的总和4. 统计非零像素的数量

电脑显示hdmi无信号怎么办? 电脑显示器无信号的终极解决指南

《电脑显示hdmi无信号怎么办?电脑显示器无信号的终极解决指南》HDMI无信号的问题却让人头疼不已,遇到这种情况该怎么办?针对这种情况,我们可以采取一系列步骤来逐一排查并解决问题,以下是详细的方法... 无论你是试图为笔记本电脑设置多个显示器还是使用外部显示器,都可能会弹出“无HDMI信号”错误。此消息可能