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

python open cv(图像处理的基本操作)

概要图

1读取图像

cv2.imread() 函数是OpenCV库中用于读取图像文件的函数。它有两个参数:

  1. 文件名:这是第一个也是必需的参数,它指定了要读取的图像文件的路径和文件名。这个路径可以是相对路径,也可以是绝对路径。

  2. 标志:这是第二个参数,它是可选的,用于指定图像的读取方式。这个参数有三个预定义的值,通常使用以下两个:

    • cv2.IMREAD_COLOR:这是默认值,它加载一个彩色图像。任何图像的透明度都会被忽略。在代码中通常用数字1表示。
    • cv2.IMREAD_GRAYSCALE:这个标志将图像以灰度模式读取。在代码中通常用数字0表示。
    • cv2.IMREAD_UNCHANGED:这个标志以包括alpha通道(如果存在)的方式加载图像。在代码中通常用数字-1表示。
import cv2
tupian ='D:\\1\\GenRen\\xvexi\\python\\python_opencv_\\li1.jpg'
image = cv2.imread(tupian)
print("ok1")
image2 = cv2.imread('li1.jpg')
print("ok2")
print(image2)

扩展

Alpha 通道是图像处理中的一个术语,它代表了一个额外的颜色通道,用于存储图像中每个像素的透明度信息。Alpha 通道通常与红色(R)、绿色(G)和蓝色(B)通道一起使用,构成所谓的 RGBA 颜色空间,其中:

  • R(红色)通道代表红色分量。
  • G(绿色)通道代表绿色分量。
  • B(蓝色)通道代表蓝色分量。
  • A(Alpha)通道代表透明度分量。

Alpha 通道的工作原理如下:

  • Alpha 值为 0 表示像素是完全透明的。
  • Alpha 值为 255(或在其位深度范围内的最大值)表示像素是完全不透明的。
  • Alpha 值介于 0 和 255 之间表示像素具有不同程度的半透明性。

以下是 Alpha 通道的一些用途:

  1. 图像合成: Alpha 通道允许图像合成,其中可以将一个图像叠加到另一个图像上,而不显示背景。这在创建图形和视觉效果时非常有用。

  2. 透明效果: 在网页设计和动画中,Alpha 通道用于创建透明背景的图像,允许背景颜色或图像透过来。

  3. 去背景: 在图像编辑中,可以使用 Alpha 通道去除图像的背景,以便将对象从其背景中分离出来。

  4. 视觉效果: 在电影和视频游戏中,Alpha 通道用于创建烟雾、火焰和其他半透明的视觉效果。

  5. 图形软件: 在图形设计软件(如Adobe Photoshop)中,Alpha 通道用于创建和编辑选择区域,以及保存和载入选区。

注意

路径不可有中文

'D:/li1.jpg'  等于  'D:\\li1.jpg' 

2显示图像

2-1   cv2.imshow()

cv2.imshow() 是 OpenCV 库中的一个函数,用于显示图像。OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,它提供了很多处理图像和视频的函数。

以下是 cv2.imshow() 函数的基本用法:

cv2.imshow(window_name, image)
  • window_name:字符串类型,表示显示图像的窗口名称。(一个名字)
  • image:要显示的图像,通常是 NumPy 数组格式。(读取的图像数据
import cv2image1 = cv2.imread('li1.jpg')
print(image1)
cv2.imshow('chuang_ko', image1)

2-2   cv2.waitKey()

cv2.waitKey() 函数是 OpenCV 库中的一个函数,用于等待一个按键事件发生。这个函数通常用于在显示图像的窗口中暂停程序,直到用户按下某个键。以下是关于 cv2.waitKey() 的详细信息:

函数原型:

retval = cv2.waitKey([delay])

参数:

  • delay:这是一个可选的整数参数,指定了函数等待按键事件的时间(以毫秒为单位)。如果 delay 是正数,函数将等待指定的毫秒数;如果在这段时间内没有按键事件发生,函数将返回 -1。如果 delay 是 0,函数将无限期等待按键事件。

返回值:

  • retval:返回值是按键的 ASCII 码值,或者如果没有按键事件发生且 delay 为正数时,返回 -1。如果 delay 为 0 并且用户按下了某个键,retval 将是按键对应的 ASCII 码值。
  • 规定时间没按下返回  -1
  • 规定时间按下返回按下键的ASCII码
  • 值为0时一直等待按下

2-3   cv2.destroyAllWindows()

在 OpenCV 中,cv2.destroyAllWindows() 函数用于关闭所有已经打开的 OpenCV 窗口。这个函数没有返回值,它的作用是清理所有与 OpenCV 窗口相关的资源。

(注意大小写)

import cv2image1 = cv2.imread('li1.jpg')
print(image1)
cv2.imshow('chuang_k1o', image1)
cv2.destroyAllWindows()
cv2.imshow('chuang_ko', image1)
retval1 = cv2.waitKey(0)  #用于等待一个按键事件发生
print(retval1)
扩展

cv2.destroyWindows() 是 OpenCV 库中的一个函数,用于关闭指定的 OpenCV 窗口。与 cv2.destroyAllWindows() 不同,cv2.destroyWindows() 允许你指定要关闭的窗口名称列表。

# 关闭指定的窗口
cv2.destroyWindow('Window 1')# ‘Window 1’  是窗口的名字

3保存图像

cv2.imwrite() 是 OpenCV 库中的一个函数,用于将图像保存到文件中。这个函数非常有用,尤其是在处理图像后需要保存结果时。

函数原型如下:

retval = cv2.imwrite(filename, img)

参数:

  • filename:这是一个字符串,指定了要保存图像的文件路径和文件名。文件扩展名(如 .jpg.png.bmp 等)决定了图像的保存格式。
  • img:这是一个 NumPy 数组,代表要保存的图像。

返回值:

  • retval:这是一个布尔值,表示图像是否成功保存。如果保存成功,返回 True;如果失败,返回 False
import cv2image1 = cv2.imread('li1.jpg')
print(image1)
cv2.imwrite("li2.jpg", image1)#第一个参数是文件路径和文件名
#只写文件名表示为当前路径

注意

路径不可有中文

4获取图像属性

  • image.shape:返回一个元组,表示图像的高度、宽度和通道数(对于彩色图像是 3,对于灰度图像是 1)。
  • image.size:返回一个整数,表示图像中元素的总数。对于彩色图像,这将是高度乘以宽度乘以通道数。
  • image.dtype:返回图像数据类型。通常,OpenCV 中的图像数据类型是 uint8,表示图像中的每个像素值都是一个 8 位的无符号整数。
import cv2# 读取图像
image1 = cv2.imread('li1.jpg')# 打印图像的形状
print(image1.shape)  # 输出是 (height, width, channels)(高,宽,通道)# 打印图像的大小(元素的总数)
print(image1.size)  # 输出是 height * width * channels# 打印图像的数据类型
print(image1.dtype)  # 输出是 uint8

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Spring Bean生命周期
  • 什么是单例模式?
  • 【两整数之和】python刷题记录
  • Go并发编程
  • 简单的位运算
  • 设计模式实战:社交网络平台的设计与实现
  • 03:【stm32】GPIO
  • 【STM32】“stm32f10x.h” 头文件的作用
  • iPhone怎么大批量删除照片:释放你的存储空间
  • 【第十天】进程和线程的区别 并行和并发有什么区别 解释一下用户态和核心态
  • C语言初阶(11)
  • 元组(tuple)—数据容器
  • 常见的MySQL数据库面试题
  • 样本熵与近似熵:度量时间序列复杂性的方法
  • 2024 NVIDIA开发者社区夏令营环境配置指南(Win Mac)
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 2018一半小结一波
  • 3.7、@ResponseBody 和 @RestController
  • angular组件开发
  • exports和module.exports
  • HashMap剖析之内部结构
  • Java超时控制的实现
  • js ES6 求数组的交集,并集,还有差集
  • JS基础之数据类型、对象、原型、原型链、继承
  • laravel with 查询列表限制条数
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • Spring核心 Bean的高级装配
  • storm drpc实例
  • Web Storage相关
  • 从零搭建Koa2 Server
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 如何进阶一名有竞争力的程序员?
  • 入门级的git使用指北
  • 通过npm或yarn自动生成vue组件
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • 我们雇佣了一只大猴子...
  • 正则表达式-基础知识Review
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • "无招胜有招"nbsp;史上最全的互…
  • #etcd#安装时出错
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (WSI分类)WSI分类文献小综述 2024
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (六)c52学习之旅-独立按键
  • (算法)Travel Information Center
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • .Net Core 生成管理员权限的应用程序