Python numpy库的应用、matplotlib绘图、opencv的应用

这篇具有很好参考价值的文章主要介绍了Python numpy库的应用、matplotlib绘图、opencv的应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

numpy

import numpy as np

l1 = [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 np

A = 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 np

a = 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 random

import 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()

Python numpy库的应用、matplotlib绘图、opencv的应用,Python与人工智能,python,numpy,matplotlib
Python numpy库的应用、matplotlib绘图、opencv的应用,Python与人工智能,python,numpy,matplotlib
Python numpy库的应用、matplotlib绘图、opencv的应用,Python与人工智能,python,numpy,matplotlib
Python numpy库的应用、matplotlib绘图、opencv的应用,Python与人工智能,python,numpy,matplotlib
Python numpy库的应用、matplotlib绘图、opencv的应用,Python与人工智能,python,numpy,matplotlib文章来源地址https://www.toymoban.com/news/detail-618020.html

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的应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 量化交易与人工智能:Python库的应用与效用

    💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】 🤟 基于Web端打造的:👉轻量化工具创作平台 💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 量化交易是一种利用计算机算法执行交易策略的交易方法,它依赖于严格定义的规则和数学模型,而非人

    2024年02月05日
    浏览(49)
  • python——matplotlib绘图详解大全

    目录 一、图形绘制大全 1.1 2D图形绘制 1.1.1 绘制单线图形 1.1.2 绘制多线图 1.1.3 读取文件中的数据绘制图形 1.1.4 绘制散点图 1.1.5 绘制条形图 1.1.5.1 单条条形图 1、垂直条形图 2、水平条形图 1.1.5.2 多组条形图 1.1.5.3 堆积条形图 1.1.5.4 对称条形图 1.1.4 饼图 1.1.5 直方图 1.1.6 箱形

    2024年02月09日
    浏览(41)
  • anaconda 安装matplotlib 、PIL 、opencv、numpy、mediapipe、skimage、torch torchvision torchaudio、imutils、onnx

    【安装matplotlib】 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple matplotlib==3.5.2 【安装PIL】(如果已经安装了matplotlib,则无需单独安装) pip install pillow 【安装opencv】 pip install -i https://mirrors.aliyun.com/pypi/simple/ opencv-python==3.4.11.45 pip install -i https://mirrors.aliyun.com/pypi/simple/ opencv-contrib-

    2024年01月24日
    浏览(43)
  • Python中Matplotlib库的使用(三)—— Matplotlib绘制图的常用类型

    plot(x,y) plot(x, y) 函数用于绘制折线图。折线图是一种用来展示连续数据之间关系的图表类型,适用于表示数据随着一个或多个变量的变化而变化的情况。 具体来说, plot(x, y) 函数接受两个参数: x :表示X轴上的数据点的值,通常是一个数组或列表,表示自变量的取值。 y :

    2024年02月03日
    浏览(73)
  • Python Matplotlib 3D绘图详解(汇总)

    最初开发的 Matplotlib,仅支持绘制 2d 图形,后来随着版本的不断更新, Matplotlib 在二维绘图的基础上,构建了一部分较为实用的 3D 绘图程序包,比如 mpl_toolkits.mplot3d,通过调用该程序包一些接口可以绘制 3D散点图、3D曲面图、3D线框图等 mpl_toolkits 是 Matplotlib 的绘图工具包。

    2024年02月04日
    浏览(39)
  • Python——第6章 Numpy库的使用

    Numpy 是 Python 专门处理高维数组 (high dimensional array) 的计算的包。 官网 (www.numpy.org). 列表和数组区别 列表:数据类型可以不同——3.1413, ‘pi’, 3.1404, [3.1401, 3.1349], ‘3.1376’ 数组:数据类型相同——3.1413, 3.1398, 3.1404, 3.1401, 3.1349, 3.1376 数组的创建—定隔定点的 np.aran

    2024年02月06日
    浏览(41)
  • Python 面向对象绘图(Matplotlib篇-16)

    Python 面向对象绘图(Matplotlib篇-16)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹

    2024年01月20日
    浏览(36)
  • Python 数据分析——matplotlib 快速绘图

    matplotlib采用面向对象的技术来实现,因此组成图表的各个元素都是对象,在编写较大的应用程序时通过面向对象的方式使用matplotlib将更加有效。但是使用这种面向对象的调用接口进行绘图比较烦琐,因此matplotlib还提供了快速绘图的pyplot模块。本节首先介绍该模块的使用方法

    2024年02月11日
    浏览(46)
  • 【Python数据分析】numpy库的使用-上篇

    NumPy是一个用于科学计算的Python库,它提供了高性能的多维数组对象和用于处理这些数组的各种工具。NumPy的名称来自于“ Numerical Python ”的缩写。 NumPy的主要功能包括: 多维数组对象:NumPy提供了多维数组对象,称为 ndarray ,它是一个由同类型数据组成的表格。 ndarray 可以包

    2024年02月06日
    浏览(39)
  • 银行营销数据分析---Python(numpy、pandas、matplotlib)

    数据来源:kaggle银行营销数据 工具:Python、Jupyter Notebook 本项目采取的是kaggle银行营销的数据源,主要是预测客户是否会订购银行的产品,但是,这次我将 使用numpy、pandas、matplotlib数据分析三件套,基于源数据,深入分析影响银行三大业务—存款、贷款、营销产品的因素 ,

    2024年02月07日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包