当前位置: 首页 > article >正文

Python OpenCV图片读取和保存

显示图像
import cv2
import numpy as np

img = cv2.imread('image.jpg')  # 读取图像
cv2.imshow('src',img)          # 显示图像,图像显式名字src
cv2.waitKey(2000)              # 等待按键按下,等待2秒( 2000: 等待2秒(2000ms) 0:一直等待
存储图像
# 读取灰色图像(默认彩色图,cv2.IMREAD_GRAYSCALE 灰度图,cv2.IMREAD_UNCHANGED 包含alpha通道)
img = cv2.imread('image.jpg',cv2.IMREAD_GRAYSCALE)  
cv2.imwrite('grayImage.png',img)	# 存储图像(会根据后缀,自动转换为对应格式)

中文路径

cv2.imwrite(filename, img)
修改为
cv2.imencode('.jpg', img)[1].tofile(filename)
 
cv2.imread(filename, cv2.IMREAD_GRAYSCALE)
修改为
cv2.imdecode(np.fromfile(filename, dtype=np.uint8), cv2.IMREAD_GRAYSCALE)
图像缩放
img = cv2.resize(img,(160,120))  #//更改宽(列)=160 ,高(行)=120
读取图像数据
img = cv2.imread('image.jpg')  # 读取图像(返回的是numpy,方便后续数据处理) 
print(img.shape)               # 图像的高(行数)h, 宽(列数)w, 通道数c  --  如(240,320,3)   
print(img.size)                # 图像大小(总像素数目)                 --  如230400       
print(img.dtype)               # 数据类型                             -- 如 uint8         
print(img)                     # 输出图像的数据  

在进行图像处理时,需要注意以下原则:

  • 遵守版权规定:在处理他人图像时,应确保遵守版权规定,不侵犯他人版权。
  • 图像处理算法选择:根据实际需求选择合适的图像处理算法,避免过度处理。
  • 图像质量:在处理过程中,注意保持图像质量,避免失真或模糊。
  • 图像尺寸与分辨率:在处理图像时,注意图像的尺寸和分辨率,以满足后续处理和分析的需求。
  • 图像文件格式:选择合适的图像文件格式,以平衡存储空间和处理速度。
imread函数

使用imread()读取图像,imread包含两个参数:

imread(图像路径, 图像形式);

其中图像形式有三种:

  • 加载彩色图像(默认加载形式)
imread(图像路径, IMREAD_COLOR)

或者:

imread(图像路径, 1)
  • 加载灰度模式图像
imread(图像路径, IMREAD_GRAYSCALE)

或者:

imread(图像路径, 0)
  • 加载图像,包括alpha通道
imread(图像路径,IMREAD_UNCHANGED)

或者:

imread(图像路径, -1)
namedWindow函数

功能:namedWindow() 的功能就是新建一个显示窗口,用来显示图像。

namedWindow() 包含两个参数:

namedWindow(窗口名称, 窗口形式)

窗口形式常用的两种:

  • 显示的图像大小不能改变(默认形式)

    namedWindow(窗口名称, WINDOW_AUTOSIZE)
    
  • 图像大小能够调节

    namedWindow(窗口名称, WINDOW_NORMAL)
    
imshow函数

功能:imshow函数用于显示图像。

imshow() 函数包含两个参数:

imshow(窗口名称,图像名称)

imwrite函数

功能:imwrite函数用于显示图像。
imwrite() 函数包含两个参数:
imwrite(保存图像名称及格式,图像名称)


http://www.kler.cn/a/383889.html

相关文章:

  • 【Spring Security】 Spring Security 使用案例详细教程
  • 重构代码之参数化方法
  • 解决vue3导出.xlsx的blob文件受损问题
  • LangChain Ollama实战文献检索助手(三)思维链COT、思维树TOT和思维网NOT
  • TypeError: can‘t multiply sequence by non-int of type ‘float‘
  • 【深度学习遥感分割|论文解读4】UNetFormer:一种类UNet的Transformer,用于高效的遥感城市场景图像语义分割
  • CSS弹性布局:灵活布局的终极指南
  • 使用Python多线程抓取某图网数据并下载图片
  • Ubuntu 安装 redis
  • 前端基础-html-注册界面
  • 前端Web用户 token 持久化
  • java的类加载机制的学习
  • 最新kubernetes搭建(k8s)(已成功搭建)
  • CSS中的 BFC,是啥呀?
  • NetCore使用Aop和内存缓存对接口、方法进行数据缓存
  • SpringSecurity(三)SpringBoot集成SpringSecurity实现认证授权
  • 软考:性能测试的几个方面
  • 组态软件的概念
  • 基于单片机的变频空调系统设计(论文+源码)
  • 智能网联汽车:人工智能与汽车行业的深度融合
  • 在AI时代,如何解决人的工作岗位被AI替代的问题?
  • 删除 需要来自XXXX的权限才能对此文件夹进行更改 文件的解决办法
  • Flutter自定义矩形进度条实现详解
  • macos中安装和设置ninja
  • 如何推进软硬件协同优化,点亮 AI 新时代?
  • 【人工智能学习推荐框架--及带实例教程】