Python numpy库的应用、matplotlib绘图、opencv的应用
numpy
import numpy as npl1 = [1, 2, 3, 4, 5]# array():将列表同构成一个numpy的数组
l2 = np.array(l1)
print(type(l2))
print(l2)
# ndim : 返回数组的轴数(维度数)
# shape:返回数组的形状,用元组表示;元组的元素个数表示数组的轴数;元组元素值表示对应轴中数组的元素个数
# 元组的元素个数表示数组的轴数;元组元素值表示对应轴中数组的元素个数
# (第一轴长,第二轴长,第三轴长...)
print(l2.ndim, l2.shape)l2 = np.array([3, 4, 5])
print(l2)l2 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(l2.ndim, l2.shape)
print(l2)l2 = np.array([[[1, 2, 1], [3, 4, 2]], [[5, 6, 3], [7, 8, 4]]])
print(l2.shape) # --> (2, 2, 2)# l3 = l2.reshape((2, 6)) # reshape() : 改变数组的形状
l3 = l2.reshape(2, 6)
print(l3)l4 = l2.reshape(1, 2, 2, 3)
print(l4)# arange(start, stop, step):产生某个范围数据的 一维数组 [start, stop, step)
l5 = np.arange(1, 11).reshape(5, 2) # 表示第一个括号有5个元素,第二个括号有2个元素
print(l5)l5 = np.arange(1, 11, 2)
print(l5)D:\Anaconda\anaconda\envs\tf\python.exe D:\pycharm\python\day5\numpyy.py
<class 'numpy.ndarray'>
[1 2 3 4 5]
1 (5,)
[3 4 5]
2 (3, 3)
[[1 2 3][4 5 6][7 8 9]]
(2, 2, 3)
[[1 2 1 3 4 2][5 6 3 7 8 4]]
[[[[1 2 1][3 4 2]][[5 6 3][7 8 4]]]]
[[ 1 2][ 3 4][ 5 6][ 7 8][ 9 10]]
[1 3 5 7 9]进程已结束,退出代码0
numpy 运算
import numpy as npA = np.array([[1, 2, 3], [4, 5, 6]])
B = np.array([[7, 8], [9, 10], [11, 12]]).reshape(2, 3)C = A * B # a00 * b00, a01 * b01, a02 * b02
print(C)# numpy数组的运算实质是将 数组对应位置的元素进行运算
C = A - B
print(C)
C = A + B
print(C)
C = A / B
print(C)C = np.sum(A, axis=1) # 计算数组各行元素之和
print(C)
C = np.sum(A, axis=0) # 计算数组各列元素之和
print(C)print("---------------")
a = np.array([1, 2, 3, 4, 5]).reshape(5, 1)
b = np.array([6, 7, 8, 9, 10]).reshape(5, 1)
c = np.hstack((a, b)) # 水平方向合并
print(c)
c = np.vstack((a, b)) # 垂直方向合并
print(c)D:\Anaconda\anaconda\envs\tf\python.exe D:\pycharm\python\day5\numpy运算.py
[[ 7 16 27][40 55 72]]
[[-6 -6 -6][-6 -6 -6]]
[[ 8 10 12][14 16 18]]
[[0.14285714 0.25 0.33333333][0.4 0.45454545 0.5 ]]
[ 6 15]
[5 7 9]
---------------
[[ 1 6][ 2 7][ 3 8][ 4 9][ 5 10]]
[[ 1][ 2][ 3][ 4][ 5][ 6][ 7][ 8][ 9][10]]进程已结束,退出代码0
numpy 索引切片
import numpy as npa = np.array([1, 2, 3, 4, 5, 6])
print(a, a[2], a[2:5])b = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 0]])
# numpy的多维数组中,拥有多个轴,每个轴都有索引编号,从0开始
# 访问元素[第一轴索引,第二轴索引,第三轴索引...]
print(b, b[0, 2], b[1, 3])
print(b[1, 2:])
# 元素的索引可以进行切片处理[start:stop:step, start:stop:step...]
print(b[:, 1::2])
print("-----------")
c = np.arange(24).reshape(3, 2, 4)
print(c)
print(c[:, 0, 1:3])D:\Anaconda\anaconda\envs\tf\python.exe D:\pycharm\python\day5\numpy索引切片.py
[1 2 3 4 5 6] 3 [3 4 5]
[[1 2 3 4 5][6 7 8 9 0]] 3 9
[8 9 0]
[[2 4][7 9]]
-----------
[[[ 0 1 2 3][ 4 5 6 7]][[ 8 9 10 11][12 13 14 15]][[16 17 18 19][20 21 22 23]]]
[[ 1 2][ 9 10][17 18]]
matplotlib 绘图
import randomimport matplotlib.pyplot as plt
import numpy as np"""# 1.绘制直线
"""
x = np.array([1.2, 5.8, 9])
y = np.array([1.0, 8.5, 10])
# plot() : 绘制直线,参数x必须是两点的x轴坐标集, 参数y必须是两点的y轴坐标集
# 参数c表示线条的颜色
plt.plot(x, y, c='b', lw=2)
# show(): 显示绘图
plt.show()"""# 1.绘制散点(3, 3)
"""
# scatter() : 绘制散点
# 参数x:点的x坐标集 参数y:点的y坐标集 参数s:点的面积 参数c:点的颜色
# 参数marker:点的形状(o:原点,*:星形,^:三角形,s:矩形,d:菱形 )
# x = np.array([3])
# y = np.array([4])
# normal():正太分布函数 参数1:正态分布中心点 参数2:点的离散程度 参数3:产生的点的个数
# uniform():产生某个范围的点 参数1:start最小值 参数2:stop最大值 参数3:产生的点个个数
x = np.random.normal(0, 5, 1000)
y = np.random.uniform(0, 2, 1000)
# y = np.arange(1000)
plt.scatter(x[0:500], y[0:500], s=50, c='g', marker='*', linewidths=3)
plt.scatter(x[500:], y[500:], s=50, c='b', marker='o')
plt.show()"""# 2.绘制正弦线
"""
x = np.arange(0, 6, 0.001)
y = np.sin(x)
plt.plot(x, y)
plt.show()"""3.多子图绘制
"""
plt.subplot(221)
x = np.array([2, 4])
y = np.array([3, 8])
plt.plot(x, y)plt.subplot(222)
x = np.arange(0, 6, 0.01)
y = np.cos(x)
plt.plot(x, y)plt.subplot(223)
x = np.array([2, 4, 6])
y = np.array([8, 10, 12])
plt.scatter(x, y)plt.subplot(224)
x = np.array([0, 8, 9.8])
y = np.array([0, 8, 9.8])
plt.plot(x, y)
plt.show()"""4.绘制柱状图
"""
x_dat = ("jan", "feb", "mar", "apr", "may") # x刻度名
x_index = np.arange(len(x_dat)) # 刻度的索引
y1 = (20, 10, 15, 18, 25) # 收入数值,单位k
y2 = (8, 25, 13, 10, 12) # 支出数值,单位k
# bar:柱状图(索引位置、高度、宽度、颜色、透明度、图例名)
plt.bar(x_index, height=y1, width=0.4, color='g', alpha=0.4, label="revenue")
plt.bar(x_index + 0.4,height=y2, width=0.4, color='r', alpha=0.4, label="expense")
plt.legend() # 显示图例
plt.xticks(x_index + 0.2, x_dat)
plt.show()





opencv图像处理,以及人脸识别
import cv2"""1.加载本地图片并显示
"""
img = cv2.imread("1.png")
print(type(img))
print(img.shape)
# imshow(): 窗口显示 img图片
cv2.imshow("src", img)
# waitKey(n):阻塞等待按键按下,如果等待n时间内没有按键按下,则立即返回
# 如果有按键按下 则返回按下的按键的编码:默认为永久阻塞
if cv2.waitKey() == ord("q"):print("按下的按键为q")# destroyAllWindows() : 销毁窗口cv2.destroyAllWindows()"""2.图片的变换
"""
img = cv2.imread("1.png")
# cvtColor(): 图片变换的函数,参数1:原图数据 参数2:变换的方式 COLOR_BGRA2GRAY:灰色
gray = cv2.cvtColor(img, cv2.COLOR_BGRA2GRAY)
gray = cv2.resize(src=gray, dsize=(640, 480))
print(gray.shape) # 500, 281
# imwrite():将图片数据写入文件中
cv2.imwrite("g.png", gray)
cv2.imshow("gray", gray)
if cv2.waitKey() == ord("q"):cv2.destroyAllWindows()"""3.图片的截取 点(36宽,15高) 框架( 101宽,42高)
"""
img = cv2.imread("1.png")
# shape(500, 281, 3) 高、宽、3
image = img[15:15+42, 36:36+101, :]
cv2.imshow("src", image)
# waitKey(n):阻塞等待按键按下,如果等待n时间内没有按键按下,则立即返回
# 如果有按键按下 则返回按下的按键的编码:默认为永久阻塞
if cv2.waitKey() == ord("q"):print("按下的按键为q")# destroyAllWindows() : 销毁窗口cv2.destroyAllWindows()"""4.操作摄像头
"""
# 构造对象,打开摄像头 0
cap = cv2.VideoCapture(0)
if not cap.isOpened():print("摄像头打开失败")exit(-1)
while True:# read() :读取摄像头拍摄的一帧图片,返回ret读取的标志 和 image图片内容ret, img = cap.read()if len(img) == 0:print("没有图片信息,图片读取失败")cap.release()exit(-1)cv2.imshow("src", img)# waitKey 参数为毫秒if cv2.waitKey(1) == 27:break
# release():释放摄像头
cap.release()
cv2.destroyAllWindows()"""5.人脸检测
"""
path = "haarcascade_frontalface_default.xml"
# 加载人脸检测的模型,使用CascadeClassifier联级分类器
classifier = cv2.CascadeClassifier(path)
cap = cv2.VideoCapture(0)
if not cap.isOpened():print("摄像头打开失败")exit(-1)
while True:# read() :读取摄像头拍摄的一帧图片,返回ret读取的标志 和 image图片内容ret, img = cap.read()if len(img) == 0:print("没有图片信息,图片读取失败")cap.release()exit(-1)# 由于官方给定的模型需要灰度图,所以需要转换为灰度图gray = cv2.cvtColor(img, cv2.COLOR_BGRA2GRAY)# 使用分类器对灰度图片中的人脸进行检测# 图片中有几张人脸,二维数组就有几个元素# [[x, y, w, h], [x, y, w, h]]face = classifier.detectMultiScale(gray)if len(face) != 0:print(face)for f in face:x, y, w, h = f # 得到人脸的x, y, w, h# rectangle():绘制矩形 参数pt1:人脸左上角坐标轴 参数pt2:人脸右下角坐标值 参数thickness线条粗细, color边框颜色cv2.rectangle(img, pt1=(x, y), pt2=(x+w, y+h),thickness=1, color=(122, 100, 30))# circle(): 画圆cv2.circle(img, center=(x+w//2, y+h//2), radius=w//2, color=(100, 133, 200))cv2.imshow("src", img)# waitKey 参数为毫秒if cv2.waitKey(1) == 27:break
# release():释放摄像头
cap.release()
cv2.destroyAllWindows()
相关文章:
Python numpy库的应用、matplotlib绘图、opencv的应用
numpy import numpy as npl1 [1, 2, 3, 4, 5]# array():将列表同构成一个numpy的数组 l2 np.array(l1) print(type(l2)) print(l2) # ndim : 返回数组的轴数(维度数) # shape:返回数组的形状,用元组表示;元组的元素…...
SpringBoot 如何进行 统一异常处理
在Spring Boot中,可以通过自定义异常处理器来实现统一异常处理。异常处理器能够捕获应用程序中抛出的各种异常,并提供相应的错误处理和响应。 Spring Boot提供了ControllerAdvice注解,它可以将一个类标记为全局异常处理器。全局异常处理器能…...
数据库索引优化与查询优化——醍醐灌顶
索引优化与查询优化 哪些维度可以进行数据库调优 索引失效、没有充分利用到索引-一索引建立关联查询太多JOIN (设计缺陷或不得已的需求) --SQL优化服务器调优及各个参数设置 (缓冲、线程数等)–调整my.cnf数据过多–分库分表 关于数据库调优的知识点非常分散。不同的 DBMS&a…...
Student and Teacher network(学生—教师网络)与知识蒸馏
Student and Teacher network指一个较小且较简单的模型(学生)被训练来模仿一个较大且较复杂的模型(教师)的行为或预测。教师网络通常是一个经过训练在大型数据集上并在特定任务上表现良好的模型。而学生网络被设计成计算效率高且参…...
FPGA——PLD的区别以及各自的特点
目录 一、概述二、PLD的优点三、PLD的分类1、PROM(可编程只读存储器):2、PAL(可编程阵列逻辑)3、GAL(通用阵列逻辑)4、CPLD (复杂PLD)5、FPGA(现场可编程门阵…...
八、Kafka时间轮与常见问题
Kafka与时间轮 Kafka中存在大量的延时操作。 1、发送消息-超时重试机制 2、ACKS 用于指定分区中必须要有多少副本收到这条消息,生产者才认为写入成功(延时 等) Kafka并没有使用JDK自带的Timer或者DelayQueue来实现延迟的功能,而…...
Web端即时通讯技术(SEE,webSocket)
目录 背景简介个人见解被动推送轮询简介实现 长轮询(comet)简介实现 比较 主动推送长连接(SSE)简介实现GETPOST 效果 webSocket简介WebSocket的工作原理:WebSocket的主要优点:WebSocket的主要缺点: 实现用法一用法二 **效果** 比较…...
脑电信号处理与特征提取——4.脑电信号的预处理及数据分析要点(彭微微)
目录 四、脑电信号的预处理及数据分析要点 4.1 脑电基础知识回顾 4.2 伪迹 4.3 EEG预处理 4.3.1 滤波 4.3.2 重参考 4.3.3 分段和基线校正 4.3.4 坏段剔除 4.3.5 坏导剔除/插值 4.3.6 独立成分分析ICA 4.4 事件相关电位(ERPs) 4.4.1 如何获…...
分析npm run serve之后发生了什么?
首先需要明白的是,当你在终端去运行 npm run ****,会是什么过程。 根据上图的一个流程,就可以衍生出很多问题。 1,为什么不直接运行vue-cli-service serve? 因为直接运行 vue-cli-service serve,会报错,…...
LINUX上操作redis 用shell7
LINUX上操作redis 用shell7 步骤1:连接到Linux服务器步骤2:安装和配置Redis步骤3:连接到Redis服务器步骤4:操作Redis数据步骤5:断开与Redis服务器的连接 步骤1:连接到Linux服务器 首先,需要使用…...
Python的threading模块
为引入多线程的概念,下面是一个例子: import time, datetimestartTime datetime.datetime(2024, 1, 1, 0, 0, 0) while datetime.datetime.now() < startTime:time.sleep(1)print(Program now starting on NewYear2024) 在等待time.sleep()的循环调…...
HTML5 的离线储存怎么使用,工作原理
TML5提供了一种称为离线储存(Offline Storage)的功能,它允许网页在离线时缓存和存储数据,以便用户可以在没有网络连接的情况下访问这些数据。离线储存是通过使用Web Storage API或者应用程序缓存(Application Cache&am…...
FTP文件传输协议与DHCP
基本概念 主机之间传输文件是IP网络的一个重要功能 互联网早期,最通用方式就是使用FTP(File Transfer Protocol,文件传输协议)以及(Trivial File Transfer Protocol,简单文件传输协议) FTP采用…...
【UE5 多人联机教程】06-显示玩家名称
效果 可以看到玩家输入各自的名称,会显示到自己控制的角色头上。但是目前有一个BUG就是,当客户端加入游戏时会多创建一个服务端的角色。 步骤 1. 打开“BP_ThirdPersonCharacter”,添加一个控件组件,用于显示玩家名称 作为网格体…...
Rust vs Go:常用语法对比(五)
题图来自 Rust vs Go 2023[1] 81. Round floating point number to integer Declare integer y and initialize it with the rounded value of floating point number x . Ties (when the fractional part of x is exactly .5) must be rounded up (to positive infinity). 按规…...
Flutter 扩展函数项目实用之封装SizedBox
Flutter里扩展函数可以用简化代码写法,关键字为extension,伪代码写法如下: extension 扩展类名 on 扩展类型 { //扩展方法 } 在Flutter页面里实现控件间距会常用到SizedBox,可使用扩展函数封装来达到简化代码的目的࿰…...
EMC学习笔记(二十)EMC常用元件简单介绍(二)
EMC常用元件简单介绍(二) 1.瞬态抑制二极管(TVS)2.气体放电管3.半导体放电管 电磁兼容性元件是解决电磁干扰发射和电磁敏感度问题的关键,正确选择和使用这些元件是做好电磁兼容性设计的前提。由于每一种电子元件都有它各自的特性,…...
基本排序算法
目录 一,插入排序 二,希尔排序 三,选择排序 四,冒泡排序 五,快排 5.1 Hoare法 5.2 挖坑法 5.3 指针法 5.4 非递归写法 六,归并排序 6.1 递归 6.2 非递归 一,插入排序 基本思想&…...
python调用百度ai将图片/pdf识别为表格excel
python调用百度ai将图片识别为表格excel 表格文字识别(异步接口)图片转excel 表格文字识别V2图片/pdf转excel通用 表格文字识别(异步接口) 图片转excel 百度ai官方文档:https://ai.baidu.com/ai-doc/OCR/Ik3h7y238 使用的是表格文字识别(异步接口),同步…...
Ansible最佳实践之Playbook管理滚动更新
写在前面 理解不足小伙伴帮忙指正 傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老下去。在我看来,这是比死亡…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...
