树莓派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

相关文章

Python如何去除图片干扰代码示例

《Python如何去除图片干扰代码示例》图片降噪是一个广泛应用于图像处理的技术,可以提高图像质量和相关应用的效果,:本文主要介绍Python如何去除图片干扰的相关资料,文中通过代码介绍的非常详细,... 目录一、噪声去除1. 高斯噪声(像素值正态分布扰动)2. 椒盐噪声(随机黑白像素点)3. 复杂噪声(如伪

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

java对接海康摄像头的完整步骤记录

《java对接海康摄像头的完整步骤记录》在Java中调用海康威视摄像头通常需要使用海康威视提供的SDK,下面这篇文章主要给大家介绍了关于java对接海康摄像头的完整步骤,文中通过代码介绍的非常详细,需... 目录一、开发环境准备二、实现Java调用设备接口(一)加载动态链接库(二)结构体、接口重定义1.类型