python图像处理实战(一)—图像基础

news2024/12/28 5:49:27

🚀写在前面🚀

🖊个人主页:https://blog.csdn.net/m0_52051577?type=blog 

🎁欢迎各位大佬支持点赞收藏,三连必回!!

🔈本人新开系列专栏—python图像处理

❀愿每一个骤雨初晴之时,所有的蜻蜓振翅和雨后惊雷,都归你。

目录

一、前言

二、认识图像 

三、用到的库

 (1)Numpy

 (2)OpenCV

 (3)Matplotlib

四、代码实操 

(1)矩阵创建(numpy)

1、创建方式一:常规array法创建

2、创建方式二:zero初始化法

3、创建方式三:ones创建法 

4、创建方式四:单位矩阵创建 

(2)三个重要属性

(3)基本操作

(4)矩阵运算

(5)获取元素 

(6)绘图函数 

(7)读取显示图像 


注:相关图片资源可在积分资源中获取,相关链接:https://download.csdn.net/download/m0_52051577/87844285?spm=1001.2014.3001.5503

一、前言

图像处理是计算机视觉的一个重要研究领域,主要研究如何让计算机代替人眼实现对目标的分类、识别、跟踪和场景理解等内容。

二、认识图像 

 

 说明:分辨率:像素点的数量(1080P:1920✖1080)

PPI(像素密度):每英寸所拥有的像素数量

PPI=\frac{\sqrt{X^{2}+Y^{2}}}{square}其中square表示屏幕尺寸

相同尺寸下,像素点越多,图片的分辨率越高,图片的像素密度越高,看起来也就越清晰。

 三、用到的库

 (1)Numpy

在图像处理中主要用于

※导入库

※元素、向量处理

※矩阵属性

※加减乘除、立方、开根

※最大值、最小值、平均值

※矩阵乘法

※元素获取

 (2)OpenCV

在图像处理中主要用于

※导入库

※读取图片

※显示图片

※保存图片

 (3)Matplotlib

 在图像处理中主要用于

※导入库

※绘制折线图

※绘制柱状图

※绘制xy坐标

※绘制标题

※显示图片

        通过前面对库的相关介绍,了解到这些库在用于图像处理中的各自分工,那么这些库是如何在图像处理中发挥作用的,下面上代码。

这里提供几个库的安装命令:

pip install numpy matplotlib -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
pip install pandas scipy scikit-learn scikit-image -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
pip install opencv-python -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
pip install jupyter -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
pip install jupyterlab -i http://pypi.douban.com/simple --trusted-host pypi.douban.com 

四、代码实操 

(1)矩阵创建(numpy)

#导入库
import numpy as np

 1、创建方式一:常规array法创建

A = np.array([
    [1,2,3],
    [4,5,6],
    [7,8,9]
])

 

2、创建方式二:zero初始化法

B = np.zeros((3,4))

 

3、创建方式三:ones创建法 

C = np.ones((3,4), dtype=np.int64)
E = np.ones((2,4,3))

 

  注:其中zero函数与ones函数创建格式相同,其中(3,4)表示创建3行4列的二维数组,或三个四维行向量。 (2,4,3)表示创建一个2页4行3列的三维数组。

        np.ones函数的应用非常广泛,它可以被广泛用于科学计算、图像处理、机器学习、深度学习等领域。

4、创建方式四:单位矩阵创建 

D = np.identity(4)

 

创建4阶的单位矩阵。 

(2)三个重要属性

print('A.dtype =', A.dtype)  #类型
print('A.ndim =', A.shape)   #表示各位维度大小的元组。返回的是一个元组。
print('A.ndim =', A.ndim)    #ndim返回的是数组的维度,返回的只有一个数,该数即表示数组的维度。

A1 = A.reshape((1,9))
print(A1) # 有几个方括号,就有几个维度

A1 = A1.astype(np.float32)#转换数组的数据类型。

(3)基本操作

# 加减乘除
B = A + 2 
C = A / 2  

print(A)
print(B)
print(C)

 

# 平方、开根、对数
B = np.power(A, 0.5)
C = np.sqrt(A)
D = np.log(A)

print(B)
print(C)
print(D)

 

# 最大值、最小值、平均值
ma1 = A.max() 
ma2 = np.max(A)

mi1 = A.min(axis=0)
mi2 = np.min(A, axis=0)

me1 = A.mean(axis=1)
me2 = np.mean(A, axis=1)

# 转置
print(A)
print(A.T)
print(A.transpose())
print(np.transpose)

(4)矩阵运算

x = np.array([1, 1, 2])

z1 = A * x
z2 = A @ x
z3 = A.dot(x)

print(z1)
print(z2)
print(z3)

B = np.ones((3,3), dtype=np.int)

Z1 = A * B # 逐元素相乘
Z2 = A @ B # 矩阵乘法
Z3 = A.dot(B) #获取两个元素a,b的乘积

print(Z1)
print(Z2)
print(Z3)

 

(5)获取元素 

u = np.arange(2, 10, 2)
print(u)

  arange()函数:(2,10,2)获取[2,10)之间以2为步长的元素。

 

E = np.random.randint(0, 10, (5,5), dtype=np.int)
# 获取子矩阵
E1 = E[0:3, 0:3].copy()
print(E1)

 

E1.flatten()#返回一个一维数组。

 

(6)绘图函数 

A1 = np.random.randint(0, 10, (10,10))
print(A1)
bins = np.arange(-0.5, 10, 1)
plt.hist(A1.flatten(), bins=bins, rwidth=0.8, color='green')
plt.xticks(range(0,10))
plt.show()

 创建数组A1:

创建了10×10的二维数组,其中每行的元素为[0,10)的数字。 

根据创建的数组绘制图像:

 其中,bins是一个范围,采用-0.5到10的范围,间隔为1。

(7)读取显示图像 

img1 = cv.imread('D:\\proclass\\class\\pic\\apple.jpg')
img1 = cv.cvtColor(img1, cv.COLOR_BGR2RGB)
plt.imshow(img1)
plt.show()

 

#读取灰度图
img2 = cv.imread('D:\\proclass\\class\\pic\\apple.jpg', 0)
plt.imshow(img2, cmap='gray')
plt.show()

 

输出两张图片的维度发现,图1为3维,即彩色颜色通道,图2为2维,即黑白颜色通道。 

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

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

相关文章

Android12之service调试(一百五十二)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

C4D R26 渲染学习笔记 建模篇(3):生成器

文章目录 前文回顾介绍篇建模篇 生成器介绍生成器变形器搭配举例 生成器详细介绍细分曲面布料曲面 未完待续 前文回顾 介绍篇 C4D R26 渲染学习笔记(1):C4D版本选择和初始UI框介绍 C4D R26 渲染学习笔记(2)&#xff…

微服务Spring Cloud 02------使用Eureka实现注册中心(1)

1.Eureka简介 Eureka是Spring Cloud中的一个负责服务注册与发现的组件。遵循着CAP理论中的A(可用性)和P(分区容错性)。 Eureka是Netflix中的一个开源框架。它和 Zookeeper、Consul一样,都是用于服务注册管理的,同样,Spring-Cloud 还集成了Zo…

Canvas画布基本功能及实现网页签名功能

canvas 简介 <canvas> 是 HTML5 新增的&#xff0c;一个可以使用脚本(通常为 JavaScript) 在其中绘制图像的 HTML 元素。它可以用来制作照片集或者制作简单(也不是那么简单)的动画&#xff0c;甚至可以进行实时视频处理和渲染。和所有 DOM 元素一样&#xff0c;拥有自己…

chatgpt赋能python:Python中累乘的作用和用法

Python中累乘的作用和用法 在Python编程语言中&#xff0c;累乘指的是连续乘法&#xff0c;或者说是一系列数字的乘积。累乘的概念非常简单&#xff0c;但是实际上它在编程中有着广泛的应用。 累乘在Python中的实现方式 Python中&#xff0c;累乘可以通过多种方式来实现&…

手写一个webpack插件(plugin)

熟悉 vue 和 react 的小伙伴们都知道&#xff0c;在执行过程中会有各种生命周期钩子&#xff0c;其实webpack也不例外&#xff0c;在使用webpack的时候&#xff0c;我们有时候需要在 webpack 构建流程中引入自定义的行为&#xff0c;这个时候就可以在 hooks 钩子中添加自己的方…

使用docker和minio实现对象存储

文章目录 使用docker和minio实现对象存储什么是minio安装minio使用minio 使用docker和minio实现对象存储 什么是minio ​ Minio是一个开源的分布式文件存储系统&#xff0c;它基于 Golang 编写,虽然轻量&#xff0c;却拥有着不错的高性能&#xff0c;可以将图片、视频、音乐、…

Sequelize:Node.js 中的强大 ORM 框架

❤️砥砺前行&#xff0c;不负余光&#xff0c;永远在路上❤️ 目录 前言优势&#xff1a;提高效率&#xff0c;不用SQL即可完成数据库操作。 那什么是 Sequelize&#xff1f;主要特性&#xff1a;1、模型定义和映射&#xff1a;2、关联和联接&#xff1a;3、事务管理&#xff…

Java性能权威指南-总结2

Java性能权威指南-总结2 性能测试方法原则2:理解批处理流逝时间、吞吐量和响应时间批处理流逝时间吞吐量测试 原则3:用统计方法应对性能的变化 性能测试方法 原则2:理解批处理流逝时间、吞吐量和响应时间 性能测试的第2条原则是多角度审视应用性能。应该测量哪个指标取决于对…

chatgpt赋能python:Python中的与非

Python中的与非 在Python编程中&#xff0c;我们经常会用到与非运算符&#xff0c;用来判断条件语句中的真假性。在本文中&#xff0c;我们将介绍Python中的与非运算符&#xff0c;并探讨其用法和实际应用场景。 什么是与非运算符&#xff1f; 与非运算符是一个布尔操作符&a…

NeRF-SLAM代码记录

前言 没运行成功,尤其是编译gtsam部分,每一步都有错,又是讨厌c++第一天。 这一行编译到92% 就会报错 python/CMakeFiles/gtsam_py.dir/build.make:250: recipe for target python/CMakeFiles/gtsam_py.dir/linear.cpp.o failed make[2

.NET 8 Preview 4 发布

作者&#xff1a;Jon Douglas - Principal Program Manager, NuGet 翻译&#xff1a;Alan Wang 排版&#xff1a;Alan Wang 我们很高兴与大家分享在 .NET 8 预览版 4 中的所有新功能和改进&#xff01;这次发布是继预览版 3之后的更新。您将在这些月度发布中看到更多功能逐渐亮…

【无标题】win11打开VMware虚拟机蓝屏解决

win11打开VMware虚拟机蓝屏解决 win11打开虚拟机蓝屏&#xff01;&#xff01;&#xff01;解决方案&#xff1a;win11支持16.2以上版本&#xff0c;其他版本不兼容&#xff0c;可用文末的卸载工具卸载之前已安装版本&#xff08;深度卸载&#xff09;&#xff0c;然后下载16.2…

chatgpt赋能python:Python中的乘号:一个重要的数学运算符

Python中的乘号&#xff1a;一个重要的数学运算符 在 Python 编程语言中&#xff0c;乘号通常是使用“*”表示的数学运算符。这个运算符非常常用&#xff0c;它可以在各种情况下使用。本文将探讨 Python 中乘号的基本用法&#xff0c;以及更高级的用法。 基本用法 在 Python…

python+django高校人事管理系统vue

本高校人事管理系统以Django作为框架&#xff0c;Python语言&#xff0c;B/S模式以及MySql作为后台运行的数据库。本系统主要包括以下功能模块&#xff1a;用户、院长、职称申报、工资信息、绩效信息、奖惩信息、招聘、科系分类等模块。 本文着重阐述了高校人事管理系统的分析、…

easyX实践上手操作小项目

easyX实践上手操作小项目 效果展示主菜单的装饰玩法介绍界面开始游戏界面制作团队界面排行榜界面注&#xff1a;main()函数拓展数据库小结 这里我们学习过easyX的基础知识后&#xff0c;看看是否能实践操作一下&#xff0c;制作一个属于自己的游戏界面呢&#xff1f; 基础知识…

基于深度学习的高精度野生目标检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度野生目标检测识别系统可用于日常生活中检测与定位野生目标目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的野生目标目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测…

开源SCRM营销平台MarketGo-账号管理

一、概述 企业在经营的过程中&#xff0c;因为业务、税收等各种因素的需要在各地成立分公司&#xff0c;这样针对公司来说管理成本&#xff0c;运营成本&#xff0c;营销成本都会提高&#xff0c;并且沟通的效率也会变低。 在用户营销的场景中&#xff0c;MarketGo在SCRM做了…

C++ stack容器介绍

&#x1f914;stack容器介绍&#xff1a; &#x1f4d6; stack是一种数据结构&#xff0c;也可以被称为堆栈。它是一个容器&#xff0c;只允许在最顶层进行插入和删除&#xff0c;并且只能访问最后一个插入的元素。这个元素称为栈顶。所有新插入的元素都被放置在栈顶上面&#…

【C++入门】什么是引用

目录 一、引用概念 二、引用特性 三、常引用 四、使用场景 1. 做参数 2. 做返回值 五、传值&#xff0c;传引用效率比较 六、引用和指针的区别 一、引用概念 引用不是新定义一个变量&#xff0c;而是给已存在变量取一个别名&#xff0c;编译器不会为引用变量开辟内存空间…