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

news2025/1/21 22:11:07

概要图

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 cv2

image1 = 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 cv2

image1 = 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 cv2

image1 = 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

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

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

相关文章

小技巧大功效,「仅阅读两次提示」让循环语言模型超越Transformer++

在当前 AI 领域,大语言模型采用的主流架构是 Transformer。不过,随着 RWKV、Mamba 等架构的陆续问世,出现了一个很明显的趋势:在语言建模困惑度方面与 Transformer 较量的循环大语言模型正在快速进入人们的视线。 令人兴奋的是&am…

c++ string解析及其实现

因为字符串是固定长度&#xff0c;不好进行操作&#xff0c;因此c就用类将字符串进行了封装让其变得方便实用。 要深刻了解string&#xff0c;我们必须要熟练掌握类的使用&#xff0c;如果还有疑问可以看这一篇博客:c 类 (要学习类这一篇就够了 ) string #include<string…

Android 11(R)启动流程 初版

启动流程 bootloader会去启动android第一个进程Idle&#xff0c;pid为0&#xff0c;会对进程 内存管理等进行初始化。Idle还被称作swapper。Idle会去创建两个进程&#xff0c;一个是init&#xff0c;另外一个是kthread。 kthread会去启动内核&#xff0c;用户是由init进行启动。…

算法通关:017_1:二叉树及三种顺序的递归遍历

文章目录 题目思路代码运行结果 题目 二叉树及三种顺序的递归遍历 思路 代码 /*** Author: ggdpzhk* CreateTime: 2024-08-04** 二叉树及三种顺序的递归遍历* LeetCode 144. 二叉树的前序遍历* LeetCode 94. 二叉树的中序遍历* LeetCode 145. 二叉树的后序遍历* LeetCode 10…

sqli-labs靶场——第二关

1、判断注入类型 ?id1和?id2-1的页面一样所以是数字型 2、判断闭合类型 数字型没有闭合符号 3、order by查看有几列 当输入order by 4 时候页面变化&#xff0c;3的时候正常&#xff0c;所以是3列 4、union select联合查询查看回显 /sqli-labs/Less-2/?id-1 union sel…

ESP32使用MQTT协议通讯(EMQX)

一、背景介绍 前面完成了ESP32MicroPython环境的搭建01_ESP32 MicroPython开发环境搭建_eps32开发板-CSDN博客 现在想实现以下功能&#xff1a; 1.通过手机或电脑&#xff0c;远程给ESP32发送相关指令。 2.ESP32接到指令后&#xff0c;做出相应的高低电平输出。 这样就相当…

视频编辑SDK,底层架构合理,前端自定义程度高

如何高效、专业地制作出符合品牌形象、吸引目标受众的视频内容&#xff0c;成为了众多企业面临的共同挑战。美摄科技&#xff0c;作为视频编辑技术的先行者&#xff0c;以其卓越的视频编辑SDK&#xff08;Software Development Kit&#xff09;&#xff0c;为企业用户量身打造了…

进程状态都有哪些?

目录 前言&#xff1a; 进程的各个状态&#xff1a; 1、R状态&#xff08;进程运行状态&#xff09;和S状态&#xff08;休眠状态&#xff09; 2、T状态和t状态&#xff08;暂停进程&#xff09; 3、D状态&#xff08;磁盘休眠状态&#xff09; 4、Z状态&#xff08;僵尸状…

学习笔记 韩顺平 零基础30天学会Java(2024.8.2)

P447 五大运行时异常 P448 异常课堂练习 P449 异常处理机制 try-catch-finally throws(处理机制二选一)&#xff0c;如果没有显式处理异常&#xff0c;默认throws JVM处理异常直接输出异常信息&#xff0c;退出程序 P450 tryCatch 对于第一个细节&#xff0c;发生异常之后时try…

C语言快速入门及精通学习指南——手把手教零基础/新手入门(完整C语言学习笔记整理)

前言 作为一名拥有多年开发经验的码农&#xff0c;我的职业生涯涵盖了多种编程语言&#xff0c;包括 C 语言、C、C# 和 JavaScript。在这一过程中&#xff0c;我深刻地意识到扎实的基础对于编程学习的重要性&#xff0c;尤其是对于 C 语言这样一门核心语言来说。 出于对…

sgg快餐项目-3 项目

一、数仓架构 本项目的数据是事务数据&#xff0c;都存储在mysql数据库&#xff0c;如果是其他的项目&#xff0c;那数据可能会在文本、爬虫等。要使用相关的组件将数据导入到HDFS上。&#xff08;因为要把数据导入到hive做数据管理、存储和分析&#xff0c;而hive就是在hfds上…

2024年文件防泄密系统TOP3|遥遥领先的文件防泄密系统

古语有云&#xff1a;“密者&#xff0c;国之重器&#xff0c;不可不慎。” 在今日之数字化时代&#xff0c;信息的保密与安全&#xff0c;已然成为企业乃至国家生存与发展的基石。 随着数据泄露事件频发&#xff0c;文件防泄密系统的重要性愈发凸显。 2024年&#xff0c;随着…

数据存储与访问

一、文件存储读写 1.Android文件的操作模式 2.文件的相关操作方法 3.文件读写的实现 Android中的文件读写和Java中的文件I/O相同&#xff0c;流程也很简单&#xff0c;下面我们来写个简单的示例&#xff1a; PS:这里用的是模拟器&#xff0c;因为笔者的N5并没有root&#xf…

Go语言加Vue3零基础入门全栈班11 Go语言+gorm用户管理系统实战 2024年08月03日 课程笔记

概述 如果您没有Golang的基础&#xff0c;应该学习如下前置课程。 Golang零基础入门Golang面向对象编程Go Web 基础Go语言开发REST API接口_20240728Go语言操作MySQL开发用户管理系统API教程_20240729Redis零基础快速入门_20231227GoRedis开发用户管理系统API实战_20240730Mo…

工业人工智能真的能落地吗?

文章目录 前言Part1 聊聊技术1 人工智能、机器学习和深度学习的关系2 优化思想的一个案例 part2 聊聊业务3 工业人工智能与消费互联网人工智能的区别3.1 消费互联网中人工智能的应用3.2 为什么如此成熟的消费互联网人工智能扩展到工业场景那么难 4 工业互联网人工智能的发展方向…

wxPython中wx.adv.DatePickerCtrl用法

wx.adv.DatePickerCtrl是一个日期选择组件&#xff0c;支持键盘手工录入日期和弹出日历窗口选择日期两种方式。 一、组件样式 wx.adv.DP_SPIN &#xff1a; 只允许键盘手工录入和组件右侧上下箭头调整日期。 wx.adv.DP_DROPDOWN &#xff1a; 只允许健盘手工录入和组件右侧打开…

CentOS7 编译ffmpeg wasm库

1. 安装 emscripten 1)克隆 emsdk git clone https://github.com/emscripten-core/emsdk.git 2)cd 到emsdk 3)安装,按照官网的步骤(Download and install — Emscripten 3.1.65-git (dev) documentation) 4)验证 注意:如果emcc -v 报错: 提示是python脚本错误,是因为…

Qt Modbus 寄存器读写实例

一.线圈状态寄存器读写 项目效果如下 1. 写单个寄存器 MODBUS_API int modbus_write_bit(modbus_t *ctx, int coil_addr, int status); int addrui->spinBoxwirte_addr->value();int dataui->spinBoxwirte_data->value();int ret modbus_write_bit(mb,addr,d…

【Qt】Qt日志信息处理

Qt日志信息处理 一、介绍二、相关函数的使用介绍1. qInstallMessageHandle2. QtMsgType3. QMessageLogContext 三、一个简单示例 一、介绍 Qt有Info、Debug、Warning、Critical、Fatal五种级别的调试信息。 Info: 提示信息qDebug&#xff1a;调试信息qWarning&#xff1a;警告…

目标检测——X光安检数据集

1. OPIXray数据集&#xff08;2020&#xff09; 2. HIXray数据集&#xff08;2021&#xff09; 3. SIXray数据集&#xff08;2019&#xff09; 4. CLCXray数据集&#xff08;2022&#xff09; 5. PIDray数据集&#xff08;2021&#xff09; 6. GDXray数据集&#xff08;20…