当前位置: 首页 > news >正文

openCV第一篇

文章目录

前言:计算机眼中的图片 

1. 图片的读取与显示

1.1 图片的读取 

1.2 显示的图片

1.2.1 显示原始图片 

1.2.2 灰度图

1.3 BGR转换成灰度图、RGB

2. 保存图片

3. 视频的读取与显示

4. 截取图像部分

5. 颜色通道提取

6. 边界填充

7. 数值计算

8. 图像融合

9. 知识点总结*

前言:计算机眼中的图片 

  • 计算机中图片由许多个像素点组成,如一个500x500的图片,表示长宽各由500个像素点组成。
  • 计算机中一个像素点的值在0-255表示该点亮度  0暗(黑)-255亮(白) 
  • 一张彩图通常是由RGB(red、green、blue)三个颜色通道所组成
  • 一个500x500的图片那他们的 RGB 矩阵也各是500x500。

ac0ddb3b16ac461f8800a63b014ccb32.png

上图我们将一个大的图片分割成许多如20x20的小图片,同理每个小图片它们的RGB矩阵也各自是20x20。

注:opencv默认顺序不是RBG 而是 BGR。

1. 图片的读取与显示

1.1 图片的读取 

import cv2 
img = cv2.imread('./data/abv.jpg')
  • img = cv2.imread('./data/abv.jpg') 

比如我读入这样一张图片,命名为img

9a095a8b15874db5a24eb370f9114921.png

我们可以看到img是一个三维ndarray结构,内部数据类型dtype=unit8:

fa66daf6f2e04378ad0a3e9fad429222.png

  • 三维:(1080,1920,3)表示高度、宽度、颜色通道个数(cv彩图BGR)
  • ndarray结构:数据类型dtype=unit8, 0-255。

1.2 显示的图片

1.2.1 显示原始图片 

cv2.imshow('image',img) # 第一个参数表示窗口指定的名字 第二个为上方img
cv2.waitKey(5000) # 等待时间  如果是5000则在5s后图片窗口自动关闭  0表示任意键关闭
cv2.destroyAllWindows() # 时间一到关闭窗口

 ps: 图像的显示也可以是多个窗口

  • cv2.imshow('image',img) 自己给将要弹出的窗口起个名  再加入变量img
  • cv2.waitKey(5000) 等待时间  如果是5000则在5s后图片窗口自动关闭  0表示任意键关闭
  • cv2.destroyAllWindows() 时间一到关闭窗口

为方便下面使用,我们自己定义一个函数cv_show():

def cv_show(name,img):
    cv2.imshow(name,img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

执行代码,弹出窗口,显示图片:

cv_show('winName',img)

9a095a8b15874db5a24eb370f9114921.png

1.2.2 灰度图

在之前的基础之上加入参数:cv2.IMREAD_GRAYSCALE 

img2=cv2.imread('./data/abv.jpg',cv2.IMREAD_GRAYSCALE)  # cv2.IMREAD_COLOR
  • img2=cv2.imread('./data/abv.jpg',cv2.IMREAD_GRAYSCALE)  
    • cv2.IMREAD_GRAYSCALE  读取为灰度图,也可以写0。
    • cv2.IMREAD_COLOR           读取为彩图

我们执行:

cv_show('win2',img2) 

78e49cf7f9334abbaf807391dcb6dc80.png可以看到该图片最终显示结果为二维(1080,1920) :

ca9cba0adb754f20b82d6d042013260d.png

ps: img.size 输出像素点的个数,可以看到同一张图片BGR彩图是灰度图的三倍。

95b3b5d31c7c4a31b22b22353bfe81dc.png

1.3 BGR转换成灰度图、RGB

当然我们也可以把已经读取进来的BGR彩图转换成灰度图,或者转换为RGB。

img2 = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 
cv_show('win3',img2)
  • img2 = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 
    • cv2.COLOR_BGR2RGB 将BGR格式转换成RGB
    • cv2.COLOR_BGR2GRAY 将BGR格式转换成灰度图片

2. 保存图片

cv2.imwrite('./data/grayPhoto.jpg',img2)
  • cv2.imwrite('./data/grayPhoto.jpg',img2)

此时我的data文件夹下就多了一张刚刚处理好名为grayPhoto的灰度图。

899d5d3076bb4e2ebbb5886343545a50.png

3. 视频的读取与显示

视频也是由图像组成的,每一帧都可以当作是一个静止的图像,把图像连在一起看着就像是一个视频了。 我们打游戏时,也是追求一些更高的帧率。

vc = cv2.VideoCapture('./data/stu.mp4')
  • vc = cv2.VideoCapture('./data/stu.mp4')
# 检查是否正确打开
if vc.isOpened():
    open,frame = vc.read()
else:
    open = Flase
  • vc.read()
    • 读取视频中的第一帧 ,再次执行vc.read()的话读取视频第二帧
    • 返回值中:第一个:布尔类型,能读进来就是True   第二个像是上面的img,这一帧图片的ndarray矩阵

循环图片播放视频:

while open:
    ret,frame = vc.read()
    if frame is None:
        break
    if ret == True:
        # 原本frame是(h,w,3)的BGR图片矩阵 经下方加入参数转换成黑白gray
        gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) 
        cv2.imshow('result',gray)
        # cv2.waitKey(num) 该图片显示时间/速度 自己可以找一个合适的值
        # 27指退出键ESC 退出窗口  当然也可以是 =='q'等
        if cv2.waitKey(20)&0xFF == 27: 
            break
vc.release()
cv2.destroyAllWindows()

注:视频放完 ret, frame = vc.read()返回False和None 再次进行循环无法播放视频,需要重新读取。

  • if cv2.waitKey(20)&0xFF == 27:
    • 不是新知识点了,表示每张图片等20毫秒,如果按ESC键直接退出。

4. 截取图像部分

我们上面介绍,img是一个ndarray矩阵,因此对其进行切片操作:

pho = img[100:800,200:800]  # 进行切片 高100到800 宽200到800
cv_show('win2',pho)
  • pho = img[100:800,200:800]

fa3f065b36d64fed8f9be0481322affc.png

5. 颜色通道提取

b,g,r = cv2.split(img)
# b.shape g.shape r.shape 都为 (1080, 1920)

执行

cv_show('win3',g) # 或者填 b、r

78e49cf7f9334abbaf807391dcb6dc80.png

结果就是单通道图。

如果我们想显示单一颜色,如红色:

cur_img = img.copy()
cur_img[:,:,0] = 0 # B不要了 设置为0
cur_img[:,:,1] = 0 # G不要了 设置为0
#cur_img[:,:,2] = 0 # R不要了 设置为0
cv_show('winR',cur_img)

2b3911f2428745658ca99b850eea7069.png

6. 边界填充

这个一般用于卷积,在图像周围填充一些像素。

我们以这个图片为例:

img = cv2.imread('./data/gd01.jpg')
# img.shape 为 (300, 400, 3)
cv_show('win1',img)

f4320c38f6d647c684c59065fdaa50c2.jpeg

在图片的上下左右填充50个像素,介绍5种方法: 

top_size,bottom_size,left_size,right_size=(50,50,50,50)

# 不同的填充方法 最后参数改个type值就行
replicate = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_REPLICATE)
reflect = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,cv2.BORDER_REFLECT)
reflect101=cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,cv2.BORDER_REFLECT_101)
wrap = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,cv2.BORDER_WRAP)
constant = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,cv2.BORDER_CONSTANT,value=0)
plt.subplot(231),plt.imshow(img,'gray'),plt.title('ORIGINAL')
plt.subplot(232),plt.imshow(replicate,'gray'),plt.title('REPLICATE')
plt.subplot(233),plt.imshow(reflect,'gray'),plt.title('REFLECT')
plt.subplot(234),plt.imshow(reflect101,'gray'),plt.title('REFLECT_101')
plt.subplot(235),plt.imshow(wrap,'gray'),plt.title('WRAP')
plt.subplot(236),plt.imshow(constant,'gray'),plt.title('CONSTANT')
# 注matplotlib默认R G B本例只介绍边界填充
plt.show()

496a683aaecc451faf5818c736c4d6d8.png

  • cv2.BORDER_REPLICATE
    • 复制最边缘的像素
  • cv2.BORDER_REFLECT
    • 反射法对感兴趣的图像中的像素在两边进行复制 如fedcba|abcdefgh|hgfedcb 其中abcdefgh是图像"|"外的是填充内容
  • cv2.BORDER_REFLECT_101
    • 反射法,也就是以最边缘的像素为轴,对称,gfedcb|abcdefgh|gfedcba 上面是ba|ab 这个是bab。
  • cv2.BORDER_WRAP
    • 外包装法 如:cdefgh|abcdefgh|abcdefg。
  • cv2.BORDER_CONSTANT
    • 常量法,常数值value填充。

7. 数值计算

78fc17d7f1a44630a2c7855a1001adac.png

由于是uint8类型最大255 超过相当于结果为 num%256了 

我们使用以下方法保留最大值:

cv2.add(img,img2)
  • cv2.add(img,img2)

a3903457723941c786a7d8b1ca915878.png

8. 图像融合

效果如下:

8220c58831cb4036a68f2453b6cf61ef.png

我们导入宽高相同的2张图片:

img = cv2.imread('./data/gd04.jpg')
img2 = cv2.imread('./data/gd05.jpg')
img3 = cv2.imread('./data/gd06.jpg')
print(img.shape,img2.shape,img3.shape) # (281, 600, 3) (281, 600, 3) (337, 600, 3)

如果大小不同 需要手动设置成一样的

img3 = cv2.resize(img3,(600,281))
# img3.shape (281, 600, 3)
  • img3 = cv2.resize(img3,(600,281))

ps: cv2.resize()另一种操作

img4 = cv2.resize(img3,(0,0),fx=2,fy=1)

我们执行:

res = cv2.addWeighted(img,0.6,img2,0.4,0)
plt.imshow(res)
  • res = cv2.addWeighted(img,0.6,img2,0.4,0)

0139f647a62343adbf6c29076b531589.png

R = ax1 + bx2 + c  a、b为权重 c为偏置 这里意为在原亮度上变化多少

9. 知识点总结*

  • 读取图片:
import cv2 
img = cv2.imread('./data/abv.jpg')
img2 = cv2.imread('./data/abv.jpg',cv2.IMREAD_GRAYSCALE) 
img3 = cv2.imread('./data/abv.jpg',cv2.IMREAD_COLOR) 
  • 显示图片:
def cv_show(name,img):
    cv2.imshow(name,img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
  • BGR转换成灰度图、RGB:
img2 = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 
img3 = cv2.cvtColor(img,cv2.COLOR_BGR2RGB) 
  • 保存图片:
cv2.imwrite('./data/grayPhoto.jpg',img2)
  • 视频的读取与显示:
vc = cv2.VideoCapture('./data/stu.mp4')

# 检查是否正确打开
if vc.isOpened():
    open,frame = vc.read()
else:
    open = Flase

while open:
    ret,frame = vc.read()
    if frame is None:
        break
    if ret == True:
        # 原本frame是(h,w,3)的BGR图片矩阵 经下方加入参数转换成黑白gray
        gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) 
        cv2.imshow('result',gray)
        # cv2.waitKey(num) 该图片显示时间/速度 自己可以找一个合适的值
        # 27指退出键ESC 退出窗口  当然也可以是 =='q'等
        if cv2.waitKey(20)&0xFF == 27: 
            break
vc.release()
cv2.destroyAllWindows()
  • 截取图片部分:
pho = img[100:800,200:800]  # 进行切片 高100到800 宽200到800
  • 颜色通道提取:
b,g,r = cv2.split(img)
cur_img = img.copy()
cur_img[:,:,0] = 0 # B不要了 设置为0
cur_img[:,:,1] = 0 # G不要了 设置为0
#cur_img[:,:,2] = 0 # R不要了 设置为0
cv_show('winR',cur_img)
  • 边界填充:
top_size,bottom_size,left_size,right_size=(50,50,50,50)
 
# 不同的填充方法 最后参数改个type值就行
replicate = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_REPLICATE)
reflect = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,cv2.BORDER_REFLECT)
reflect101=cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,cv2.BORDER_REFLECT_101)
wrap = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,cv2.BORDER_WRAP)
constant = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,cv2.BORDER_CONSTANT,value=0)
  • 数值计算:
cv2.add(img,img2)
  • 图像融合:
img3 = cv2.resize(img3,(600,281))

res = cv2.addWeighted(img,0.6,img2,0.4,0)

相关文章:

基于Python构建机器学习Web应用

目录 一、内容介绍 1.Onnx模型 ①skl2onnx库安装 2.Netron安装 二、模型构建 1.数据加载 2.划分可训练特征与预测标签 3.训练模型 ①第三方库导入 ②数据集划分 ③SVC模型构建 ④精度评价 二、模型转换及可视化 1.参数配置 2.Onnx模型生成 3.可视化模型 四、构…...

python - 密码加密与解密

Python之密码加密与解密 - 对称算法一、对称加密1.1 安装第三方库 - PyCrypto1.2 加密实现二、非对称加密三、摘要算法3.1 md5加密3.2 sha1加密3.3 sha256加密3.4 sha384加密3.5 sha512加密3.6 “加盐”加密由于计算机软件的非法复制,通信的泄密、数据安全受到威胁。…...

百度飞桨PaddleSpeech的简单使用

PaddleSpeech 是基于飞桨 PaddlePaddle 的语音方向的开源模型库,用于语音和音频中的各种关键任务的开发,包含大量基于深度学习前沿和有影响力的模型,一些典型的应用示例如下:语音识别、语音翻译 (英译中)、语音合成、标点恢复等。…...

Python数据标准化

目录 一.数据标准化方式 1.实现中心化和正态分布的Z-Score 2.实现归一化的Max-Min 3.用于稀疏数据的MaxAbs 4.针对离群点的RobustScaler 二.Python针对以上几种标准化方法处理数据 三.总结 一.数据标准化方式 1.实现中心化和正态分布的Z-Score Z-Score标准化是基于原…...

Pycharm无法下载汉化包,一招教你搞定

Pycharm无法下载汉化包,一招教你搞定Pycharm直接导入汉化包Pycharm 无法采用自带的插件安装汉化包Pycharm直接导入汉化包 Pycharm 是可以直接导入汉化包的,这为很多初学者省区了不少麻烦。具体就是: 1:点击pycharm界面右上角的设…...

python成功实现“高配版”王者小游戏?【赠源码】

前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 本游戏完整源码、素材: 点击此处跳转文末名片获取 咳咳,又是一款新的小游戏,就是大家熟悉的王者~ 来看我用python来实现高(di)配版的王者 是一款拿到代码运行后,…...

【项目实战】Python实现多元线性回归模型(statsmodels OLS算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 回归问题是一类预测连续值的问题,而能满足这样要求的数学模型称作回归模型,本项…...

graphviz安装教程(2022最新版)初学者适用

1、首先在官网下载graphviz 下载网址:https://www.graphviz.org/download/ 2、安装。 打开第一步已经下载好的软件。点击下一步,在安装路径选择时可将安装路径修改为 D:\graphviz 接着一直点下一步,即可安装完成。 3、配置环境变量 右键…...

【Windows】搭建Pytorch环境(GPU版本,含CUDA、cuDNN),并在Pycharm上使用(零基础小白向)

文章目录前言一、安装CUDA1、检查电脑是否支持CUDA2、下载并安装CUDA3、下载并安装cuDNN二、安装Pytorch1、安装Anaconda2、切换清华镜像源3、创建环境并激活4、输入Pytorch安装命令5、测试三、在Pycharm上使用搭建好的环境参考文章前言 本人纯python小白,第一次使用…...

Tensorflow与CUDA、cudnn版本对应关系

不同版本的Tensorflow需对应不同的CUDA和cudnn版本,否者容易安装失败。可按下图所示,根据想要安装的Tensorflow版本,选择对应版本的CUDA和cudnn。 其中CUDA的下载链接为: CUDA Toolkit Archive | NVIDIA Developer cudnn下载链…...

ImportError: cannot import name ‘Literal‘ from ‘typing‘ (D:\Anaconda\envs\tensorflow\lib\typing.py)

报错背景: 因为安装tensorflow-gpu版本需要,我把原来的新建的anaconda环境(我的名为tensorflow)中的python3.8降为了3.7。 在导入seaborn包时,出现了以下错误: ImportError: cannot import name Literal …...

100天精通Python(数据分析篇)——第67天:Pandas数据连接、合并、加入、添加、重构函数(merge、concat、join、append、stack、unstack)

文章目录 一、数据连接(pd.merge)1. left、right2. how3. on4. left_on、right_on5. sort6. suffixes7. left_index、right_index二、数据合并(pd.concat)1. index 没有重复的情况2. index 有重复的情况3. DataFrame合并时同时查看行索引和列索引有无重复三、数据加入(pd.…...

yolov5 优化系列(三):修改损失函数

1.使用 Focal loss 在util/loss.py中,computeloss类用于计算损失函数 # Focal lossg h[fl_gamma] # focal loss gammaif g > 0:BCEcls, BCEobj FocalLoss(BCEcls, g), FocalLoss(BCEobj, g)其中这一段就是开启Focal loss的关键!!&…...

Python中数组切片的用法详解

Python中数组切片的用法详解一、python中“::-1”代表什么?二、python中“:”的用法三、python中数组切片三、numpy中的整数数组索引四、numpy中借助【切片 : 或 …与索引数组】组合进行复杂切片五、布尔索引六、花式索引一、python中“::-1”代表什么? …...

python 安装whl文件

前言 WHL文件是以Wheel格式保存的Python安装包,Wheel是Python发行版的标准内置包格式。在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件,这样就使得它可以在不具备编译环境的条件下&#…...

Pycharm中安装pytorch

配置虚拟环境 为什么要安装虚拟环境?虚拟环境:把一部分内容独立出来,称之为容器。在容器中,安装我们自己想要的东西,比如不容版本的依赖包。各容器之间相互独立,互不影响。比如下载完 Anaconda 之后&#…...

Package | 解决 module ‘cv2‘ has no attribute ‘gapi_wip_gst_GStreamerPipeline‘

. 问题背景 由于这个问题出现了两回,决定记录一下。实验背景是使用opencv python库进行数据预处理,遇到报错信息如下: “ import cv2 File “/opt/conda/lib/python3.8/site-packages/cv2/init.py”, line 181, in bootstrap() File “/op…...

如何在项目中搭建python接口自动化框架?

文章目录前言一、框架目录介绍1、common模块读取Excel代码读取yaml代码(支持场景关联)jsonpath断言封装代码requests二次封装(get、post)configparser读取配置文件递归遍历字典常用方法log日志封装2、conf模块3、data模块4、case模…...

应用统计432考研复试复试提问总结精简版【一】

一、区间估计与假设检验的联系与区别 联系:二者利用样本进行推断,都属于推断统计区别: 原理: 前者是基于大概率,后者基于小概率;统计量:前者是构造枢轴量(不含未知参数,…...

Pytorch模型量化

在深度学习中,量化指的是使用更少的bit来存储原本以浮点数存储的tensor,以及使用更少的bit来完成原本以浮点数完成的计算。这么做的好处主要有如下几点: 更少的模型体积,接近4倍的减少;可以更快的计算,由于…...

已解决Encountered error while trying to install package.> lxml

已解决(pip安装第三方模块lxml模块报错)Building wheels for collected packages: lxml Building wheel for lxml (setup.py) … error error: subprocess-exited-with-error python setup.py bdist_wheel did not run successfully. note: This error o…...

距离度量 —— 闵可夫斯基距离(Minkowski Distance)

Python学习系列文章:👉 目录 👈 文章目录一、概述二、计算公式1. 闵氏距离公式2. 闵氏距离的参数 p3. 闵氏距离的缺点一、概述 闵可夫斯基距离 (Minkowski Distance),也被称为 闵氏距离。它不仅仅是一种距离,而是将多…...

python(模块)xlwt

目录一、xlwt简介二、xlwt语法1、模块安装2、模块导入3、向xls文件中写入内容4、设置写入文件的格式4.1 字体设置(font)4.2 背景颜色设置(pattern)4.3 边框设置(borders)4.4 对齐方式设置(align…...

Pytorch中torch.unsqueeze()和torch.squeeze()函数解析

一. torch.squeeze()函数解析 1. 官网链接 torch.squeeze(),如下图所示: 2. torch.squeeze()函数解析 torch.squeeze(input, dimNone, outNone) squeeze()函数的功能是维度压缩。返回一个tensor(张量),其中 input…...

python绘制相关系数热力图

python绘制相关系数热力图一.数据说明和需要安装的库二.准备绘图三.设置配色,画出多幅图全部代码:本文讲述如何利用python绘制如上的相关系数热力图一.数据说明和需要安装的库 数据是31个省市有关教育的12个指标,如下所示。,在文…...

DeepSpeed使用指南(简略版)

现在的模型越来越大,动辄几B甚至几百B。但是显卡显存大小根本无法支撑训练推理。例如,一块RTX2090的10G显存,光把模型加载上去,就会OOM,更别提后面的训练优化。 作为传统pytorch Dataparallel的一种替代,D…...

【Python】tqdm 介绍与使用

文章目录一、tqdm 简介二、tqdm 使用1. 基于迭代对象运行: tqdm(iterator)2. tqdm(list)3. trange(i)4. 手动更新参考链接一、tqdm 简介 tqdm 是一个快速,可扩展的 Python 进度条,可以在 Python 长循环中添加一个进度提示信息,用户只需要封装…...

Pytorch机器学习(十)—— 目标检测中k-means聚类方法生成锚框anchor

Pytorch机器学习(十)—— YOLO中k-means聚类方法生成锚框anchor 目录 Pytorch机器学习(十)—— YOLO中k-means聚类方法生成锚框anchor 前言 一、K-means聚类 k-means代码 k-means算法 二、YOLO中使用k-means聚类生成anchor 读取VO…...

Python的占位格式符

对于print函数里的语句 print("我的名字是%s, 年龄是%d"%(name, age)) 中的%s和%d叫做占位符,它们的完整形态是 %[(name)][flags][width][.precision]typecode 其中带有[]的前缀都是可以省略的。 [(name)]: (name)表示, 根据, 制定的名称(…...

关于sklearn库的安装

对于安装sklearn真的是什么问题都被我遇到了 例如pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(hostfiles.pythonhosted.org, port443): Read timed out.遇到了 这种也遇到了Requirement already satisfied: numpy in c:\users\yjq\appdata\roamin…...

accuracy_score函数

1.acc计算原理 sklearn中accuracy_score函数计算了准确率。 在二分类或者多分类中,预测得到的label,跟真实label比较,计算准确率。 在multilabel(多标签问题)分类中,该函数会返回子集的准确率。如果对于一…...

怎么成为稚晖君?

如何成为IT大佬稚晖君——电子系统设计应具备的基本技能和方法论 快速提高电子技术的必经之路_一些老生常谈的道理 嵌入式AI入坑经历 稚晖君软件硬件开发环境总结 首先,机器学习深度学习这些和硬件是两个领域的内容,个人不建议一起学,注意力…...

Pandas库

Pandas是python第三方库,提供高性能易用数据类型和分析工具。Pandas基于NumPy实现,常与NumPy和Matplotlib一同使用。pandas库引用: import pandas as pd 包括两个数据类型:Series(相当于一维数据类型)&…...

通过两道一年级数学题反思自己

背景 做完这两道题我开始反思自己,到底是什么限制了我?是我自己?是曾经教导我的老师?还是我的父母? 是考试吗?还是什么? 提目 1、正方体个数问题 2、相碰可能性 过程 静态思维: …...

深度学习—卷积神经网络(CNN)全笔记,附代码

本文内容为哔站学习笔记【卷积神经网络-CNN】深度学习(唐宇迪带你学AI):卷积神经网络理论详解与项目实战,计算机视觉,图像识别模块实战_哔哩哔哩_bilibili 目录 深度学习基础 什么是深度学习? 机器学习流…...

Building wheel for mmcv-full (setup.py) ... error解决办法!

mmdetection 安装后,根据官方给的程序安装mmcv时,出现:Building wheel for mmcv-full (setup.py) … error 环境:CUDA11.3, Pytorch1.11 安装根据官网给的安装程序:pip install mmcv-full -f https://download.openmm…...

联邦学习开山之作代码解读与收获

参考:联邦学习代码解读,超详细_一只揪的博客-CSDN博客_联邦学习代码 参考文献:[1602.05629] Communication-Efficient Learning of Deep Networks from Decentralized Data (arxiv.org) 参考代码:GitHub - AshwinRJ/Federated-L…...

Python安装第三方库常用方法 超详细~

Python安装第三方库常用方法前言安装方法1. 通过pychram安装2. pip安装大法3. 下载whl文件到本地离线安装3.1 补充4.其他方法4.1 Python官方的Pypi菜单4.2 国内镜像源解决pip安装过慢的问题小结前言 在pyhton的学习中,相信大家通常都会碰到第三方库的安装问题&…...

Python--找出字符串中出现次数最多的字符及其出现的次数

方法一: 1、循环遍历列表或字符串,如果字符在字典中则值加1,如果不在则创建(key,value) 2、找到字典中,最大的value值 3、根据最大的value值,找对应的key值,打印出出现次数最多的字符 str &qu…...

滤波笔记一:卡尔曼滤波(Kalman Filtering)详解

本笔记是总结了B站DR_CAN的卡尔曼滤波器的课程,他的B站主页为:DR_CAN的个人空间_哔哩哔哩_bilibili PS:虽然我不是学自控的,但是老师真的讲的很好! 目录 Lesson1 递归算法 Lesson2 数学基础_数据融合_协方差矩阵_状态空间方程…...

利用Python求斐波那契数列的第N项以及前N项和(循环、递归、集合)

著名的斐波那契数列,即从第三项开始,每一项都等于前两项之和。 之前写过利用Java语言来编写,由于最近正在学Python,所以将自己的想法记录在此,有需要的朋友可以参考一下。 写在前面:这里的三个方法其实思…...

一文速学(十八)-数据分析之Pandas处理文本数据(str/object)各类操作+代码一文详解(三)

目录 前言 一、子串提取 提取匹配首位子串 提取所有匹配项(extractall)...

Python数据分析-数据预处理

数据预处理 文章目录数据预处理1.前言2.数据探索2.1缺失值分析2.2 异常值分析2.2.1 简单统计量分析2.2.2 3$\sigma$原则2.2.3 箱线图分析2.3 一致性分析2.4 相关性分析3.数据预处理3.1 数据清洗3.1.1 缺失值处理3.1.2 异常值处理3.2 数据集成3.2.1 实体识别3.2.2 冗余属性识别3…...

【Python】AES加解密代码,文章还有加密串等你来解密,等你来挑战

🍦🍦写这篇AES文章也是有件趣事,有位小伙伴发了段密文,看看谁解密速度快,学过Python的小伙伴一下子就解开来了,内容也挺有趣的。 🍟🍟原来加解密也可以这么有趣,虽然看起…...

朴素贝叶斯模型及案例(Python)

目录 1 朴素贝叶斯的算法原理 2 一维特征变量下的贝叶斯模型 3 二维特征变量下的贝叶斯模型 4 n维特征变量下的贝叶斯模型 5 朴素贝叶斯模型的sklearn实现 6 案例:肿瘤预测模型 6.1 读取数据与划分 6.1.1 读取数据 6.1.2 划分特征变量和目标变量 6.2 模型…...

python之Tkinter详解

Python之Tkinter详解 文章目录Python之Tkinter详解1、Tkinter是什么2、Tkinter创建窗口①导入 tkinter的库 ,创建并显示窗口②修改窗口属性③创建按钮④窗口内的组件布局3、Tkinter布局用法①基本界面、label(标签)和button(按钮)用法②entry(输入)和text(文本)用法…...

【python】python进行debug操作

文章目录前言一、debug环境介绍二、debug按钮介绍2.1、step into:单步执行(遇到函数也是单步)2.2、step over:单步执行(遇到函数,全部运行)2.3、step into my code:(直接跳到下一个断点)2.4、st…...

Python安装tensorflow过程中出现“No matching distribution found for tensorflow”的解决办法

在Pycharm中使用pip install tensorflow安装tensorflow时报错: ERROR: Could not find a version that satisfies the requirement tensorflow(from versions: none) ERROR: No matching distribution found for tensorflow搜了好多帖子有的说可能是网络的问题&…...

pandas中的read_csv参数详解

1.官网语法 pandas.read_csv(filepath_or_buffer, sepNoDefault.no_default**,** delimiterNone**,** headerinfer’, namesNoDefault.no_default**,** index_colNone**,** usecolsNone**,** squeezeFalse**,** prefixNoDefault.no_default**,** mangle_dupe_colsTrue**,** dty…...

Python — — turtle 常用代码

目录 一、设置画布 二、画笔 1、画笔属性 2、绘图命令 (1) 画笔运动命令 (2) 画笔控制命令 (3) 全局控制命令 (4) 其他命令 3. 命令详解 三、文字显示为一个圆圈 四、画朵小花 一、设置画布 turtle为我们展开用于绘图区域,我们可以设置它的…...