Python+Anaconda+OpenCV+Pandas+YOLO+Matplotlib+JupyterLab环境搭建

705 阅读14分钟

下载链接及命令

  1. Python3.12.2
  2. Anaconda3-2024.02-1-Windows-x86_64.exe
  3. OpenCV:pip3 install opencv-python(会自动安装Numpy)
  4. Pandas:pip3 install pandas
  5. YOLO:pip3 install ultralytics
  6. Matplotlib:python -m pip install -U matplotlib
  7. JupyterLab:pip3 install jupyterlab
  8. Jupyter notebook:pip3 install notebook
  9. voila:pip3 install voila
注意:以上命令可以在本地python创建myevn环境安装,也可以在Anaconda创建myevn环境安装

在Python中,我们通常使用conda(来自Anaconda或Miniconda)或venv(Python内置的环境管理工具)来创建新的虚拟环境。以下是两种方法的简要说明:

使用conda创建新环境

如果你已经安装了Anaconda或Miniconda,你可以使用conda命令来创建新的环境。以下是如何操作的步骤:

  1. 打开命令行界面(如CMD、PowerShell、Terminal等)。

  2. 创建新的环境,并指定Python版本(如果需要):

    conda create --name myenv python=3.12.2
    

    这里myenv是环境的名称,python=3.12.2指定了要安装的Python版本。你可以根据需要更改这些值。

  3. 激活新环境(在Windows上是conda activate,在Unix或Mac上是source activate,但在较新的conda版本中,Unix和Mac也使用conda activate):

    conda activate myenv
    
  4. 在新环境中安装所需的包:

    conda install numpy pandas
    

使用venv创建新环境

如果你不想使用Anaconda或Miniconda,你可以使用Python内置的venv模块来创建新的环境。以下是步骤:

  1. 打开命令行界面。

  2. 导航到你想要创建环境的目录(可选)。

  3. 使用python -m venv命令创建新环境:

    python -m venv myenv
    

    这将在当前目录下创建一个名为myenv的新环境。

  4. 激活新环境(在Windows上使用myenv\Scripts\activate,在Unix或Mac上使用source myenv/bin/activate):

    对于Windows:

    myenv\Scripts\activate
    

    对于Unix或Mac:

    source myenv/bin/activate
    
  5. 在新环境中安装所需的包:

    pip install numpy pandas
    

记住,使用venv创建的环境只会包含Python解释器和pip,其他所有包都需要你手动安装。而使用conda创建的环境会默认包含一些常用的科学计算和数据科学包。

Anaconda

Anaconda是一个流行的Python数据科学平台,它允许用户轻松地创建、管理和共享Python环境,以及安装和管理各种Python包。以下是Anaconda的一些常用命令及其解释:

  1. 创建虚拟环境

    • conda create --name env_name:创建一个名为env_name的新虚拟环境。
    • conda create --name env_name python=3.6:创建一个指定Python版本(如3.6)的虚拟环境。
    • conda create --name env_name python=3.6 pandas numpy scipy:在指定Python版本下创建虚拟环境,并同时安装pandas、numpy和scipy包。
  2. 激活/使用/进入某个虚拟环境

    • conda activate env_name:激活并进入名为env_name的虚拟环境。
  3. 退出当前环境

    • deactivateconda deactivate:退出当前激活的虚拟环境。
  4. 复制某个虚拟环境

    • conda create --name new_env_name --clone old_env_name:复制名为old_env_name的虚拟环境,并创建一个新的名为new_env_name的虚拟环境。
  5. 删除某个环境

    • conda remove --name env_name --allconda env remove --name env_name:删除名为env_name的虚拟环境及其所有包。
  6. 查看当前所有环境

    • conda info --envsconda env list:列出所有已创建的虚拟环境。
  7. 查看当前虚拟环境下的所有安装包

    • conda list:在激活的虚拟环境中运行此命令,将列出所有已安装的包。
  8. 安装或卸载包

    • conda install package_name:在激活的虚拟环境中安装包。
    • conda uninstall package_name:在激活的虚拟环境中卸载包。
  9. 分享虚拟环境

    • conda env export > environment.yml:导出当前激活的虚拟环境到一个YAML文件(environment.yml)。
    • conda env create -f environment.yml:使用YAML文件(environment.yml)创建一个新的虚拟环境。
  10. 源服务器管理

    • conda config --show-sources:查看当前使用的源(即包管理器的服务器地址)。
    • conda config --add channels source_url:添加一个新的源。
    • conda config --remove channels source_url:删除一个源。
  11. 其他常用命令

    • conda clean --packages --tarballs:清理未使用的包和tarball文件。
    • conda update package_name:更新已安装的包到最新版本。
    • conda search package_name:搜索可用的包。

以上命令需要在Anaconda Prompt(或在命令窗口激活环境)中运行。

OpenCV

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,常用于图像处理和计算机视觉应用。以下是一些OpenCV的常用命令及其解释,主要基于Python版本的OpenCV(cv2):

1. 图像的读取、显示与写入

  • cv2.imread(filename[, flags]):读取图像文件。filename是图像文件的路径,flags是读取模式(如cv2.IMREAD_COLOR表示读取彩色图像,cv2.IMREAD_GRAYSCALE表示读取灰度图像)。
  • cv2.imshow(window_name, img):在窗口中显示图像。window_name是窗口的名称,img是要显示的图像。
  • cv2.waitKey(delay):等待键盘输入。delay是等待时间(以毫秒为单位),若设置为0,则无限期等待。
  • cv2.destroyAllWindows():销毁所有由OpenCV创建的窗口。
  • cv2.imwrite(filename, img[, params]):保存图像到文件。filename是输出文件的路径,img是要保存的图像,params是可选参数。

2. 图像色彩空间转换

  • cv2.cvtColor(src, code[, dst[, dstCn]]):转换图像从一个色彩空间到另一个。例如,从BGR(OpenCV默认色彩空间)转换到HSV或灰度图。src是源图像,code是转换类型(如cv2.COLOR_BGR2HSVcv2.COLOR_BGR2GRAY)。

3. 图像的创建与赋值

  • numpy.zeros(shape[, dtype=float, order='C'])cv2.zeros(shape[, dtype]):创建一个全零的数组(图像)。shape是数组的形状(如(height, width, channels))。
  • numpy.ones(shape[, dtype=float, order='C'])cv2.ones(shape[, dtype]):创建一个全1的数组(图像)。
  • numpy.full(shape, fill_value[, dtype=None, order='C']):创建一个被fill_value填充的数组(图像)。
  • Scalar(b[, g[, r[, a]]]):在OpenCV中用于指定颜色值,通常与cv2.rectangle()cv2.circle()等绘图函数一起使用。

4. 图像像素的读写操作

  • 图像像素的读写通常通过指定像素坐标(如(x, y))来直接访问图像的numpy数组实现。

5. 其他常用命令

  • cv2.resize(src, dsize[, fx[, fy[, interpolation]]]):调整图像大小。
  • cv2.flip(src, flipCode):翻转图像。
  • cv2.rotate(src, rotateCode[, center]):旋转图像(在某些版本的OpenCV中可能是cv2.getRotationMatrix2D()cv2.warpAffine()的组合)。
  • cv2.threshold(src, thresh, maxval, type[, dst]):应用阈值操作。
  • cv2.blur(src, ksize[, dst[, anchor[, borderType]]]):对图像进行模糊处理。
  • cv2.Canny(image[, threshold1[, threshold2[, apertureSize[, L2gradient]]]]):进行Canny边缘检测。

以上只是OpenCV库中的一部分常用命令和功能的简要介绍。

Pandas

Pandas是一个强大的Python数据分析库,提供了丰富的数据处理和分析功能。以下是Pandas的一些常用命令及其解释,按照功能分类进行归纳:

数据读取与写入

  1. 读取CSV文件

    • pd.read_csv('file.csv'):读取CSV文件并返回一个DataFrame对象。
  2. 写入CSV文件

    • df.to_csv('file.csv', sep=',', index=False):将DataFrame对象写入CSV文件,其中sep指定分隔符,index=False表示不写入索引。
  3. 读取Excel文件

    • pd.read_excel('file.xlsx'):读取Excel文件并返回一个DataFrame对象。
  4. 写入Excel文件

    • df.to_excel('file.xlsx', sheet_name='Sheet1', index=False):将DataFrame对象写入Excel文件,其中sheet_name指定工作表名,index=False表示不写入索引。

数据查看

  1. 显示前n条数据

    • df.head(n):返回DataFrame的前n行,默认n为5。
  2. 显示后n条数据

    • df.tail(n):返回DataFrame的后n行,默认n为5。
  3. 查看数据维度

    • df.shape:返回一个元组,表示DataFrame的行数和列数。
  4. 数据集基本信息

    • df.info():显示DataFrame的简要摘要,包括列名、非空值数量、数据类型等信息。
  5. 数据集的基本统计信息

    • df.describe():针对数值列,计算各种统计信息,如计数、均值、标准差、最小值、25%分位数、中位数、75%分位数和最大值。

数据选择

  1. 获取数据集索引

    • df.index:返回DataFrame的行索引。
  2. 查看数据值

    • df.values:以NumPy数组的形式返回DataFrame的数据。
  3. 获取数据集所有列名

    • df.columns:返回DataFrame的列名。
  4. 获取列类型

    • df.dtypes:返回DataFrame每列的数据类型。
  5. 设置索引

    • df.set_index('col_name'):将指定列设置为索引。
  6. 重置索引

    • df.reset_index(drop=True):重置索引,drop=True表示不将原索引作为一列保留在DataFrame中。

数据处理

  1. 修改数据类型

    • df['col_name'].astype(np.float32):将指定列的数据类型转换为np.float32
  2. 修改列名

    • df.rename(columns={'col_name':'new_col_name'}):使用字典参数修改列名。
  3. 调整列的顺序

    • 通过重新赋值或使用df[['col1', 'col2', 'col3']]的形式来调整列的顺序。

数据筛选

  1. 使用loc函数筛选数据

    • data.loc[labels]:根据行标签筛选数据。
    • data.loc[:, columns]:根据列标签筛选数据。
    • data.loc[data['A'] == 0]:根据某个条件筛选数据。
  2. 使用isin函数筛选数据

    • df[df.a.isin([30,54])]:根据特定值筛选记录。
  3. 使用at函数定位数据

    • data.at[row_label, column_label]:根据指定行标签和列标签快速定位DataFrame的元素。

这些命令为Pandas库中的常用功能提供了基础支持,用于数据处理、分析和探索。

YOLO

YOLO(You Only Look Once)是一种用于实时物体检测的深度学习模型。YOLO的实现有多个版本,常见的是基于Python的实现,例如用PyTorch或者Darknet框架。以下是一些常用的YOLO命令及其含义:

基于Darknet的YOLO命令

  1. 训练模型

    ./darknet detector train <data_file> <cfg_file> <weights_file>
    
    • <data_file>: 数据集配置文件,通常包含训练、验证数据集路径等信息。
    • <cfg_file>: 模型配置文件,定义了YOLO的网络结构和参数。
    • <weights_file>: 预训练权重文件(可选),用来加快训练收敛速度。
  2. 测试图片

    ./darknet detector test <data_file> <cfg_file> <weights_file> <image_path>
    
    • <image_path>: 要检测的图片路径。
  3. 测试视频

    ./darknet detector demo <data_file> <cfg_file> <weights_file> <video_path>
    
    • <video_path>: 要检测的视频路径。如果想使用摄像头,通常路径为0

基于PyTorch的YOLOv5命令

  1. 克隆YOLOv5仓库

    git clone https://github.com/ultralytics/yolov5
    cd yolov5
    
  2. 安装依赖

    pip install -r requirements.txt
    
  3. 训练模型

    python train.py --img <image_size> --batch <batch_size> --epochs <epochs> --data <data_file> --cfg <cfg_file> --weights <weights_file>
    
    • <image_size>: 输入图片大小,例如640。
    • <batch_size>: 每个训练步骤中使用的图片数量。
    • <epochs>: 训练轮数。
    • <data_file>: 数据集配置文件。
    • <cfg_file>: 模型配置文件。
    • <weights_file>: 预训练权重文件(可选)。
  4. 检测图片

    python detect.py --source <source_path> --weights <weights_file>
    
    • <source_path>: 图片、视频或文件夹路径。
    • <weights_file>: 训练好的权重文件。
  5. 检测视频

    python detect.py --source <source_path> --weights <weights_file>
    

常用参数和选项

  • --img--img-size: 设置输入图像的尺寸。
  • --batch--batch-size: 设置批次大小。
  • --epochs: 设置训练的轮数。
  • --data: 指定数据集配置文件。
  • --cfg: 指定模型配置文件。
  • --weights: 指定权重文件路径。
  • --source: 指定输入源,可以是图片、视频、文件夹或摄像头。

这些命令和参数帮助用户在不同环境下使用YOLO进行训练和推理,根据具体需求和硬件配置可以调整相应的参数。

Matplotlib

Matplotlib是一个功能强大的Python绘图库,能够生成各种高质量的图表。以下是Matplotlib中一些详细且常用的命令及其含义:

导入Matplotlib

import matplotlib.pyplot as plt

基本绘图

  1. 创建简单的线图

    plt.plot([1, 2, 3, 4], [1, 4, 2, 3])
    plt.show()
    
    • plt.plot(x, y): 创建一个线图,xy是数据列表。
    • plt.show(): 显示当前的图表。
  2. 设置标题和轴标签

    plt.title("Title of the Plot")
    plt.xlabel("X-axis Label")
    plt.ylabel("Y-axis Label")
    
    • plt.title("Title"): 设置图表标题。
    • plt.xlabel("X-axis Label"): 设置X轴标签。
    • plt.ylabel("Y-axis Label"): 设置Y轴标签。

图例和样式

  1. 添加图例

    plt.plot([1, 2, 3, 4], label="Line 1")
    plt.plot([4, 3, 2, 1], label="Line 2")
    plt.legend()
    
    • plt.legend(): 显示图例。使用label参数标记每条线的名称。
  2. 调整线条样式

    plt.plot([1, 2, 3, 4], linestyle='--', color='r', marker='o')
    
    • linestyle='--': 设置线条样式为虚线。
    • color='r': 设置线条颜色为红色。
    • marker='o': 设置数据点标记为圆圈。

子图和布局

  1. 创建子图

    plt.subplot(2, 1, 1)  # (nrows, ncols, index)
    plt.plot([1, 2, 3, 4])
    
    plt.subplot(2, 1, 2)
    plt.plot([4, 3, 2, 1])
    plt.show()
    
    • plt.subplot(nrows, ncols, index): 创建一个n行m列的子图,并激活第index个子图。
  2. 调整图形大小

    plt.figure(figsize=(10, 5))
    plt.plot([1, 2, 3, 4], [1, 4, 2, 3])
    plt.show()
    
    • plt.figure(figsize=(width, height)): 设置图形的尺寸,单位为英寸。

条形图和散点图

  1. 绘制条形图

    categories = ['A', 'B', 'C', 'D']
    values = [4, 7, 1, 8]
    
    plt.bar(categories, values)
    plt.show()
    
    • plt.bar(categories, values): 绘制条形图。
  2. 绘制散点图

    x = [1, 2, 3, 4]
    y = [10, 20, 25, 30]
    
    plt.scatter(x, y)
    plt.show()
    
    • plt.scatter(x, y): 绘制散点图。

饼图和直方图

  1. 绘制饼图

    labels = ['A', 'B', 'C', 'D']
    sizes = [15, 30, 45, 10]
    explode = (0, 0.1, 0, 0)  # 使第二部分突出
    
    plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=True, startangle=90)
    plt.axis('equal')  # 使饼图为圆形
    plt.show()
    
    • plt.pie(sizes, ...): 绘制饼图。
    • autopct='%1.1f%%': 显示百分比。
  2. 绘制直方图

    data = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
    plt.hist(data, bins=4)
    plt.show()
    
    • plt.hist(data, bins): 绘制直方图,bins参数决定了柱的数量。

网格和注释

  1. 显示网格

    plt.plot([1, 2, 3, 4], [1, 4, 2, 3])
    plt.grid(True)
    plt.show()
    
    • plt.grid(True): 显示网格线。
  2. 添加注释

    plt.plot([1, 2, 3, 4], [1, 4, 2, 3])
    plt.annotate('Annotation', xy=(2, 4), xytext=(3, 5), arrowprops=dict(facecolor='black', shrink=0.05))
    plt.show()
    
    • plt.annotate('text', xy, xytext, arrowprops): 在图表中添加注释。

保存图像

  1. 保存图像
    plt.plot([1, 2, 3, 4], [1, 4, 2, 3])
    plt.savefig('figure.png')
    
    • plt.savefig('filename'): 保存图像为文件,可以指定不同格式如PNG, PDF等。

三维图形

  1. 绘制三维图形
    from mpl_toolkits.mplot3d import Axes3D
    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')
    x = [1, 2, 3, 4]
    y = [10, 20, 25, 30]
    z = [5, 15, 25, 35]
    ax.plot(x, y, z)
    plt.show()
    
    • fig.add_subplot(111, projection='3d'): 创建三维子图。

高级图形

  1. 绘制等高线图
    import numpy as np
    x = np.linspace(-5, 5, 100)
    y = np.linspace(-5, 5, 100)
    X, Y = np.meshgrid(x, y)
    Z = np.sin(np.sqrt(X**2 + Y**2))
    
    plt.contour(X, Y, Z)
    plt.show()
    
    • plt.contour(X, Y, Z): 绘制等高线图。

这些命令提供了Matplotlib的大部分功能,可以帮助你绘制和自定义各种类型的图表。

JupyterLab

JupyterLab是一个基于Web的用户界面,用于Jupyter笔记本和其他文档。它是Jupyter Notebook的下一代界面,为用户提供了更强大的功能和更灵活的布局。以下是JupyterLab中的一些详细命令及其含义:

启动和基本使用

  1. 启动JupyterLab

    jupyter lab
    
    • jupyter lab: 启动JupyterLab服务器并在默认Web浏览器中打开。
  2. 指定浏览器启动

    jupyter lab --browser=<browser_name>
    
    • --browser=<browser_name>: 使用指定的浏览器启动JupyterLab,例如--browser=firefox
  3. 指定端口

    jupyter lab --port=<port_number>
    
    • --port=<port_number>: 指定JupyterLab使用的端口,例如--port=8888

命令行选项

  1. 查看帮助

    jupyter lab --help
    
    • --help: 显示JupyterLab命令行帮助信息。
  2. 生成配置文件

    jupyter lab --generate-config
    
    • --generate-config: 生成JupyterLab配置文件,通常位于~/.jupyter/jupyter_lab_config.py

扩展和插件

  1. 安装JupyterLab扩展

    jupyter labextension install <extension_name>
    
    • jupyter labextension install <extension_name>: 安装JupyterLab扩展,例如jupyter labextension install @jupyter-widgets/jupyterlab-manager
  2. 列出已安装的扩展

    jupyter labextension list
    
    • jupyter labextension list: 列出已安装的JupyterLab扩展。
  3. 卸载JupyterLab扩展

    jupyter labextension uninstall <extension_name>
    
    • jupyter labextension uninstall <extension_name>: 卸载JupyterLab扩展。

笔记本操作

  1. 创建新笔记本

    • 在JupyterLab界面中,点击左上角的“+”按钮,然后选择“Notebook”,选择合适的内核(如Python 3)。
  2. 重命名笔记本

    • 在JupyterLab界面中,右键点击笔记本标签,然后选择“Rename Notebook”,输入新的名称并确认。

文件和目录

  1. 上传文件

    • 在JupyterLab界面中,点击左侧文件浏览器中的“Upload”按钮,选择要上传的文件。
  2. 创建新文件/文件夹

    • 在JupyterLab界面中,点击左侧文件浏览器中的“New”按钮,选择“Text File”或“Folder”。

运行和管理代码单元

  1. 运行单元格

    • 在JupyterLab界面中,选择一个代码单元,然后按Shift+Enter运行该单元格。
  2. 运行所有单元格

    • 在JupyterLab界面中,选择“Run”菜单,然后选择“Run All Cells”运行所有单元格。
  3. 中断内核

    • 在JupyterLab界面中,选择“Kernel”菜单,然后选择“Interrupt Kernel”中断正在运行的代码。
  4. 重启内核

    • 在JupyterLab界面中,选择“Kernel”菜单,然后选择“Restart Kernel”重启当前内核。

魔法命令

JupyterLab支持IPython的魔法命令,可以用于增强功能。

  1. 查看所有魔法命令

    %lsmagic
    
    • %lsmagic: 列出所有可用的魔法命令。
  2. 时间测量

    %timeit <statement>
    
    • %timeit <statement>: 多次执行语句并返回其平均执行时间。
  3. 运行外部脚本

    %run <script.py>
    
    • %run <script.py>: 运行一个Python脚本文件。
  4. 列出当前工作目录中的文件

    %ls
    
    • %ls: 列出当前工作目录中的文件。

导入和导出

  1. 导出笔记本
    • 在JupyterLab界面中,选择“File”菜单,然后选择“Export Notebook As”可以将笔记本导出为不同的格式,如HTML、PDF等。

使用终端

  1. 启动终端
    • 在JupyterLab界面中,点击左上角的“+”按钮,然后选择“Terminal”启动一个新的终端。

使用文本编辑器

  1. 打开文本文件
    • 在JupyterLab界面中,点击左侧文件浏览器中的文本文件名称,可以在内置文本编辑器中打开文件。

这些命令和操作可以帮助你更好地使用JupyterLab,提高工作效率并充分利用其强大的功能。