cv2库、numpy库、matplotlib.pyplot库-树莓派 Opencv-基于Python学习记录DAY-1

本文介绍了Python中常用的三个库:numpy、cv2和matplotlib.pyplot的基本使用方法。详细讲解了numpy数组的操作,cv2库中图像的读取、显示与保存,以及matplotlib.pyplot的绘图功能,特别提到了图像格式的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        首先是接触到了3个常用的python库 :numpy,cv2,matplotlib.pyplot。

        在开始前博主因为没装matplotlib.pyplot而报了次错,这里贴一下,安装matplotlib.pyplot的指令

为python3安装pyqt5:

sudo apt-get install python3-pyqt5

为python3安装matplotlib:
sudo apt-get install python3-matplotlib

        分别来了解一下这三个库的作用:

numpy

        这个库最大的特点是存储N维数组,放在对象 ndarray中。

        ndarray 对象是用于存放同类型元素的多维数组,其中的每个元素在内存中都有相同存储大小的区域。

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
名称描述
object数组或嵌套的数列
dtype数组元素的数据类型,可选
copy对象是否需要复制,可选
order创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)
subok默认返回一个与基类类型一致的数组
ndmin指定生成数组的最小维度

今天碰到了numpy.zeros函数作用是创建指定大小的数组,数组元素以 0 来填充:

numpy.zeros(shape, dtype = float, order = 'C')

数据默认是float类型

np.zeros((512,512,3),np.uint8)#建立一个512*512*3的矩阵存放512*512的RGB图像

matplotlib.pyplot

Matplotlib 是 Python 的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。可以用来绘制各种静态,动态,交互式的图表。也是一个非常强大的 Python 画图工具,我们可以使用该工具将很多数据通过图表的形式更直观的呈现出来。可以绘制线图、散点图、等高线图、条形图、柱状图、3D 图形、甚至是图形动画等等。

plt.imshow(img[:,:,::-1])

今天主要是对这行有所疑问,查阅资料后,得知cv2库获取的图像是BRG格式,而plt.show()输出的是RGB格式,这一行的作用就是对BRG图片向RGB格式的转换。

#冷知识:BRG格式像素的3个值经过翻转得到的正是RGB格式的图片,上一行的作用本质上是对整个图像3个通道像素的翻转。

cv2

这就是opencv处理图像的库了

读取图像

cv.imread()

括号里两个参数
1.要读取的图像

2.读取方式的标志

cv.IMREAD*COLOR:以彩色模式加载图像,任何图像的透明度都将被忽略。这是默认参数。

cv.IMREAD*GRAYSCALE:以灰度模式加载图像

cv.IMREAD_UNCHANGED:包括alpha通道的加载图像模式。

可以使用1、0或者-1来替代上面三个标志

显示图像

cv.imshow()

两个参数:

1.显示图像的窗口名称,以字符串类型表示
2.要加载的图像

保存图像

cv.imwrite()

两个参数:

1.文件名
2.要保存的图像

显示例程

先将要展示的图片和py文件放在一个文件中,可以去usr/share/rpd-wallpaper中找图片

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

#img = np.zeros((512,512,3),np.uint8) #这一行可以生成一个512*512的黑色图片
img = cv.imread('islands.jpg',0) #读取图片
cv.imshow('image',img)    #显示图片
cv.waitKey(0)            #在调用显示图像的API后,要调用cv.waitKey()给图像绘制留下时间,否则窗口会出现无响应情况,并且图像无法显示出来

plt.imshow(img[:,:,::-1]) #转换格式

plt.show()

### 常用 Python 及其用途 #### 数据处理与分析 - **Pandas**: 提供高性能的数据结构和数据分析工具,特别适合表格数据的操作[^1]。 ```python import pandas as pd data = {'Column1': [1, 2], 'Column2': [3, 4]} df = pd.DataFrame(data) print(df) ``` - **NumPy**: 支持大型多维数组与矩阵运算的基础,广泛应用于科学计算领域. ```python import numpy as np array = np.array([1, 2, 3]) print(array) ``` #### 可视化 - **Matplotlib**: 功能强大的绘图,支持多种图表类型的创建,适用于静态、动态可视化. ```python import matplotlib.pyplot as plt plt.plot([1, 2, 3], [4, 5, 6]) plt.show() ``` - **Seaborn**: 构建在 Matplotlib 上面的高级接口,简化统计图形绘制过程. ```python import seaborn as sns sns.set_theme(style="whitegrid") tips = sns.load_dataset("tips") ax = sns.barplot(x="day", y="total_bill", data=tips) ``` #### Web开发 - **Flask**: 轻量级框架,易于扩展,非常适合构建小型到中型Web应用. ```python from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello, World!' ``` - **Django**: 完整功能的企业级Web应用程序框架,内置众多实用特性如ORM、认证系统等. ```python # Django views.py example from django.http import HttpResponse def index(request): return HttpResponse("Hello, world.") ``` #### 自然语言处理(NLP) - **NLTK (Natural Language Toolkit)**: 集成了大量语料和算法模型,用于文本分类、分词等功能实现. ```python import nltk nltk.download('punkt') text = "This is a sentence." tokens = nltk.word_tokenize(text) print(tokens) ``` #### 计算机视觉(CV) - **OpenCV**: 开源计算机视觉,提供了图像处理函数集,可用于特征检测、对象识别等领域. ```python import cv2 img = cv2.imread('image.jpg', 0) cv2.imshow('Image Window', img) cv2.waitKey(0) cv2.destroyAllWindows() ``` #### 密码学 - **Cryptography**: 提供加密协议和原语的安全实现,帮助开发者保护敏感信息传输安全. ```python from cryptography.fernet import Fernet key = Fernet.generate_key() cipher_suite = Fernet(key) token = cipher_suite.encrypt(b"A really secret message.") print(token) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凉山有客不自赏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值