(数字图像处理MATLAB+Python)第二章数字图像处理基础-第三、四节:数字图像的生成和数值描述

article/2025/8/19 2:45:56

文章目录

  • 一:数字图像的生成与表示
    • (1)图像信号的数字化
    • (2)数字图像类型
  • 二:数字图像的数值描述
    • (1)常用坐标系
    • (2)数字图像的数据结构
    • (3)常用图像格式
      • A:JPEG格式
      • B:GIF格式
      • C:TIFF格式
      • D:PNG格式
      • E:BMP格式
    • (4)BMP位图文件
      • A:位图文件头(BITMAPFILEHEADER)
      • B:位图信息头(BITMAPINFOHEADER)
      • C:调色板(RGBQUAD)
      • D:图像数据(DATA)
      • E:读取并显示图像
        • ①:目前可做程序
        • ②:实例
    • (5)综合案例
      • A:分析
      • B:肤色分布
      • C:程序设计

一:数字图像的生成与表示

数字图像的生成与表示:对于自然界中的物体,通过某些成像设备,将物体表面的反射光或者通过物体的透射光,转换成电压,在成像平面生成图像。图像中目标的亮度取决于投影成目标的景物所受到的光照度、景物表面对光的反射程度以及成像系统的特性

(1)图像信号的数字化

图像信号的数字化:模拟图像转换为数字图像,方能被计算机处理,这一过程称为图像信号的数字化,包括:采样和量化

  • 采样:对空间坐标x和y离散化,即确定水平和垂直方向上的像素数

    • 图像分辨率:采样所获得的图像总像素的多少,以水平和垂直像素数表示(p用M×N表示,M列N行,如2560×1920),分辨率不一样,数字图像的质量也不一样
      在这里插入图片描述
  • 量化:将各个像素所含的明暗信息离散化

    • 一般的量化值为整数,量化层数取为2的n次幂

    • 8位量化:也即 2 8 2^{8} 28,充分考虑到人眼的识别能力。非特殊用途的图像均为8bit量化,用[0 255]描述“从黑到白”,0和255分别对应亮度的最低和最高级别
      在这里插入图片描述

    • 在3bit以下的量化,会出现伪轮廓现象

    • 如果要求更高精度,可以增大量化分层,但编码时占用位数也会增多,数据量加大

下图为数字化的灰度图像

在这里插入图片描述

下图为数字化的彩色图像

在这里插入图片描述

(2)数字图像类型

灰度图像 每个像素只有一个强度值,呈现黑、灰、白等色

在这里插入图片描述

二值图像 每个像素值要么为0要么为1的数字图像,一般为黑白两色

在这里插入图片描述

彩色图像 每个像素值为三维向量,也即组成该色彩的RGB
在这里插入图片描述

动态图像 多帧位图的有序组合,使用动态原理,也即 Δ t ≤ 1 24 s \Delta t \leq \frac{1}{24}s Δt241s(视觉暂留时间), 产生连续活动视觉效果

在这里插入图片描述

索引图像 索引图像实际上不是一种图像类型,而是图像的一种存储方式,牵涉到数据编码的问题。p具体的颜色数据存放在调色板中,图像数据区中存放对应每一个像素点的颜色索引值

在这里插入图片描述

二:数字图像的数值描述

数字图像的数值描述:所谓的数字图像的描述是指如何用一个数值方式来表示一幅图像。因为矩阵是二维的,所以可以用矩阵来描述数字图像。同时,前面我们已经提到,量化值是整数,因此描述数字图像的矩阵一定是整数矩阵

(1)常用坐标系

常用坐标系:如下图为矩阵坐标系、直角坐标系和像素坐标系对比

在这里插入图片描述

(2)数字图像的数据结构

数字图像的数据结构

  • 文件头 图像的自我说明,应包含图像的维数、类型、创建日期和某类标题,也可以包含用于解释像素值的颜色表或编码表,甚至历史段(包含如何建立和处理图像的信息)
  • 图像数据 像素颜色值或压缩后的数据

(3)常用图像格式

A:JPEG格式

JPEG格式:中文名为联合图片专家组开发,用于彩色图像的存储和网络传送

  • 特点 采用有损压缩编码,数据量小
  • 核心技术 DCT、量化、熵编码
  • 使用要点
    • 用于保存表现自然景观的图像
    • 用于网络传送
    • 不适于表现有明显边界的图形
    • 不适用于高质量印刷文件

B:GIF格式

GIF格式:CompuServe公司开发,用于屏显和网络

  • 特点
    • 具有87a、89a两种格式
      • 87a描述单一静止图像
      • 89a描述多帧图像
    • 采用改进的LZW压缩算法
    • 彩色模式: 2 8 2^{8} 28
    • 分辨率96dpi
  • 使用要点
    • 屏显图像和电脑动画
    • 用于网络传送
    • 不适于保存高质量印刷文件

C:TIFF格式

TIFF格式:标记图像文件格式,Aldus公司开发,用于精确描述图像的场合

  • 特点
    • 文件描述单一(静止)图像
    • 彩色模式: 21 (单色)~ 232
    • 支持多平台(PC & Macintosh)
    • 可采用多种压缩数据格式
  • 使用要点
    • 平面设计作品的最佳表现形式
    • 用于提供印刷文件
    • 不适于网络传送

D:PNG格式

PNG格式:中文名便携式网络图形格式

  • 特点
    • 支持索引、灰度、RGB三种颜色方案以及Alpha通道
    • 灰度图像的深度可多到16位,彩色图像的深度可多到48位,可存储多到16位的α通道数据
    • 采用无损压缩
  • 使用要点
    • 用于平面设计
    • 用于网络传送

E:BMP格式

BMP格式:Bitmap,Microsoft公司开发,用于Windows环境

  • 特点
    • 文件描述单一(静止)图像
    • 彩色模式: 24 ~ 232
    • 调色板RGB数据顺序反向排列
    • 图像左下角为起点排列数据
    • 一般采用非压缩数据格式
  • 使用要点
    • 用于表现打印、显示用图像
    • 不适于网络传送
    • 不适于提供印刷文件

(4)BMP位图文件

A:位图文件头(BITMAPFILEHEADER)

typedef struct tagBITMAPFILEHEADER
{WORD    bfType; //文件类型,必是”BM” 0x4D42DWORD   bfSize; //指定文件大小(单位:字节)WORD    bfReserved1; //保留字,不考虑WORD    bfReserved2; //保留字,不考虑DWORD   bfOffBits;//从文件头到位图数据的偏移字节数//sizeof(fileheader)+sizeof(infoheader)+sizeof(RGBQUAD)
} BITMAPFILEHEADER

B:位图信息头(BITMAPINFOHEADER)

typedef struct tagBITMAPINFOHEADER
{DWORD biSize; //本结构的长度,40个字节 DWORD biWidth; //图像宽,单位是像素DWORD biHeight; //图像高,单位是像素WORD  biPlanes; //必须是1(位平面)WORD  biBitCount ;//颜色位数,1,4,8,24DWORD biCompression; //压缩类型DWORD biSizeImage; //实际位图数据占用的字节数DWORD biXPelsPerMeter; //水平分辨率DWORD biYPelsPerMeter; //垂直分辨率DWORD biClrUsed; //实际使用的颜色数DWORD biClrImportant; //重要的颜色数
} BITMAPINFOHEADER;

如下为256色的图像文件头及信息头

在这里插入图片描述

如下为真彩色24位的图像文件头及信息头

在这里插入图片描述

C:调色板(RGBQUAD)

RGBQUAD结构指的是一种颜色的构成,调色板中有多少种颜色就有多少种这种结构。例如:图像只有纯红和纯蓝两种颜色,调色板数据为:0 0 255 0 | 255 0 0 0

typedef struct tagRGBQUAD
{BYTE rgbBlue; //该颜色的蓝色分量BYTE rgbGreen; //该颜色的绿色分量BYTE rgbRed; //该颜色的红色分量BYTE rgbReserved; //保留值,不考虑} RGBQUAD;

D:图像数据(DATA)

  • 图像中的颜色少于或等于256时,数据是颜色在调色板中的索引
  • 图像为真彩色24位或更多,没有调色板,图像数据直接是每一个像素的颜色值B、G、R
  • 位图的存储顺序:从左到右、从下到上;即图像数据中的第一个数是图像的最左下角的像素值
  • 存储图像一行所用的字节理论上: W=biWidth*biBitCount/8,但实际上p要求W是4的倍数,不足的补0

如下图为灰度Lena图像调色板及图像数据

在这里插入图片描述

如下图为彩色Bird图像数据

在这里插入图片描述

E:读取并显示图像

①:目前可做程序

MATLAB

  • 打开并显示图像
    • imread
    • imshow
    • imwrite
  • 灰度化
    • rgb2gray
  • 色彩空间变换
    • rgb2hsv
    • rgb2ycbcr

Python

  • imread:使用OpenCV读取图像,可以使用 cv2.imread() 函数。
  • imshow:使用OpenCV显示图像,可以使用 cv2.imshow() 函数。
  • imwrite:使用OpenCV保存图像,可以使用 cv2.imwrite() 函数。
  • rgb2gray:将RGB彩色图像转换为灰度图像,可以使用 cv2.cvtColor() 函数与 cv2.COLOR_RGB2GRAY 参数来进行转换。
  • rgb2hsv:将RGB彩色图像转换为HSV图像,可以使用 cv2.cvtColor() 函数与 cv2.COLOR_RGB2HSV 参数来进行转换。
  • rgb2ycbcr:将RGB彩色图像转换为YCbCr图像,可以使用 cv2.cvtColor() 函数与 cv2.COLOR_RGB2YCrCb 参数来进行转换

②:实例

MATLAB

①:打开图像取反并显示和存储

I=imread('cameraman.jpg');
J=255-I;
subplot(121),imshow(I),title('原始图像');
subplot(122),imshow(J),title('反色图像');
imwrite(J,'cameraman反色.jpg');

在这里插入图片描述

②:打开彩色图像,灰度化和二值化

Image1=im2double(imread('lotus.jpg'));
r=Image1(:,:,1);
g=Image1(:,:,2);
b=Image1(:,:,3);
Y=0.299*r+0.587*g+0.114*b;
subplot(131),imshow(Y),title('亮度图Y');
I=(r+g+b)/3;
subplot(132),imshow(I),title('亮度图I');
BW=zeros(size(Y));
BW(Y>0.3)=1;
subplot(133),imshow(BW),title('二值化图');

在这里插入图片描述

Python OpenCV

注意

  • 在 Python 中,我们需要指定图像的读取方式(灰度或彩色),因此在 imread() 函数调用时需要将第二个参数设置为 cv2.IMREAD_GRAYSCALE
  • Matplotlib 默认的颜色映射是彩色的,因此需要将 imshow() 函数中的 cmap 参数设置为 'gray' 才能正确地显示灰度图像
  • OpenCV 默认使用 BGR 顺序读取和显示图像

①:打开图像取反并显示和存储

import cv2
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']I = cv2.imread('cameraman.jpg', cv2.IMREAD_GRAYSCALE)
J = 255-I
plt.subplot(121), plt.imshow(I, cmap='gray'), plt.title('原始图像')
plt.subplot(122), plt.imshow(J, cmap='gray'), plt.title('反色图像')
cv2.imwrite('cameraman反色.jpg', J)
plt.show()

在这里插入图片描述

②:打开彩色图像,灰度化和二值化

import cv2
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']img = cv2.imread('lotus.JPG').astype(np.float32)/255
b, g, r = cv2.split(img)Y=0.299*r+0.587*g+0.114*b
plt.subplot(131), plt.imshow(Y, cmap='gray'), plt.title('亮度图Y'), plt.axis('off')
I=(r+g+b)/3
plt.subplot(132), plt.imshow(I, cmap='gray'), plt.title('亮度图I'), plt.axis('off')
_, BW = cv2.threshold(Y, thresh=0.3, maxval=1.0, type=cv2.THRESH_BINARY)
plt.subplot(133), plt.imshow(BW, cmap='gray'), plt.title('二值化图'), plt.axis('off')plt.show()

在这里插入图片描述

(5)综合案例

打开人脸图像,利用色彩信息进行肤色检测

A:分析

  • 在检测人脸、手等目标时,常采用肤色检测的方法,将相关区域从图像中分割出来
  • 肤色分布的聚集性,即肤色的颜色分量一般聚集在某个范围内
  • 通过大量的肤色样本进行统计,找出肤色颜色分量的聚集范围或用特殊的分布模型去模拟肤色分布,进而实现对任意像素颜色的判别

B:肤色分布

  • 肤色在不同彩色空间均具有一定的聚集性。例如,据统计资料,肤色在YCbCr空间分布范围大约在: 77 ≤ C b ≤ 127 77\leq Cb\leq 127 77Cb127 133 ≤ C r ≤ 173 133\leq Cr\leq 173 133Cr173
  • 肤色模型
    • 根据大量样本的统计数据建立,确定肤色的分布规律,进而判断像素的色彩是否属于肤色或与肤色相似程度的模型
    • 常用的有阈值模型、高斯模型和椭圆模型

C:程序设计

MATLAB

这段MATLAB代码是一个肤色检测的程序,它接受一张图片作为输入,通过分别在RGB、HSV和YCbCr三个颜色空间中检测像素点是否属于肤色,并输出相应的二值图。其中,对于YCbCr空间的检测,采用了高斯模型来对肤色的分布进行建模。具体实现过程如下:

  1. 清空MATLAB的工作空间。
  2. 使用 imread 函数读取名为 motheranddaughter.jpg 的图片文件,并将其显示出来。
  3. 将图像分离成红色通道 ®、绿色通道 (g) 和蓝色通道 (b),并获取图像的大小信息。
  4. 定义一个表示肤色在YCbCr空间下的高斯分布的均值 miu 和协方差矩阵 sigma。
  5. 初始化变量 cbcr、SkinCbCrG、SkinRGB、SkinHSV 和 SkinCbCr,并设定偏移参数 thresh。
  6. 对于每个像素点,分别进行 RGB、HSV 和 YCbCr 三种颜色空间的肤色检测,并更新对应像素点在三种检测空间下的二值图。
  7. 将得到的三种检测空间下的二值图保存为 skinrgb3.jpg、skinhsv3.jpg、skincbcr3.jpg 和 skinCbCrG3.jpg 四个文件。
clear,clc,close all;
Image=imread('motheranddaughter.jpg');r=double(Image(:,:,1));
g=double(Image(:,:,2));
b=double(Image(:,:,3));
[N,M]=size(r);
miu=[117.4361 156.5599]'; % 定义肤色在YCbCr空间下的高斯分布的均值miu(行向量)
sigma=[160.1301 12.1430;12.1430 299.4574]; % 定义协方差矩阵(列向量)
cbcr=zeros(2,1);
SkinCbCrG=zeros(N,M); % 初始化一个与图像大小相同的矩阵 SkinCbCrG,用于表示 YCbCr 检测结果中检测到的肤色部分
SkinRGB=zeros(N,M); % 初始化一个与图像大小相同的矩阵 SkinRGB,用于表示 RGB 检测结果中检测到的肤色部分
SkinHSV=zeros(N,M); % 初始化一个与图像大小相同的矩阵 SkinHSV,用于表示 HSV 检测结果中检测到的肤色部分
SkinCbCr=zeros(N,M); % 初始化一个与图像大小相同的矩阵 SkinCbCr,用于表示 YCbCr 检测结果中检测到的肤色部分
thresh=0.35; % 设定YCbCr检测中的偏移参数
for i=1:M % 对于每一行for j=1:N % 对于每一列R=r(j,i);G=g(j,i);B=b(j,i);if (R>95 && G>40 && B>20 && (R-G)>15 && R-B>15) || ...(R>220 && G>210 && B>170 && R-B<=15 && R>B && G>B)SkinRGB(j,i)=1; % 判断是否是肤色,如何是设置为1endmaxRGB=max(max(R,G),B);minRGB=min(min(R,G),B);C=maxRGB-minRGB;V=maxRGB;if V==0S=0;elseS=C/V;endif maxRGB==RH=60*mod((G-B)/C,6);elseif maxRGB==GH=60*((B-R)/C+2);elseif maxRGB==BH=60*((R-G)/C+4);endif ((H>=0 && H<=25) || (H>=335 && H<=360)) && (S>=0.2 && S<=0.6) && V>=0.4SkinHSV(j,i)=1;endR=R/255;G=G/255;B=B/255;Cb=224*(-0.1687*R-0.3313*G+0.5*B)+128;Cr=224*(0.5*R-0.4187*G-0.0813*B)+128;if Cb>=77 && Cb<=127 && Cr>=133 && Cr<=173SkinCbCr(j,i)=1;endcbcr= [Cb Cr]';p=exp(-0.5*((cbcr-miu)')*(inv(sigma))*(cbcr-miu));if p>threshSkinCbCrG(j,i)=1;endend
endsubplot(151),imshow(Image),title('原图');
subplot(152),imshow(SkinRGB),title('RGB');
subplot(153),imshow(SkinHSV),title('HSV');
subplot(154),imshow(SkinCbCr),title('YCbCr');
subplot(155),imshow(SkinCbCrG),title('YCbCr');imwrite(SkinRGB,'skinrgb3.jpg');
imwrite(SkinHSV,'skinhsv3.jpg');
imwrite(SkinCbCr,'skincbcr3.jpg');
imwrite(SkinCbCrG,'skinCbCrG3.jpg');

在这里插入图片描述


http://chatgpt.dhexx.cn/article/FvopRlTl.shtml

相关文章

MATLAB GUI设计 图像处理基本操作(二)

一、直方图及直方图均衡化 直方图是从图像灰度图中提取的亮度信息&#xff0c;包含灰度级和像素数&#xff0c;对于uint8图像其灰度级为0~255&#xff08;2^8256&#xff09;&#xff0c;用imhist&#xff08;&#xff09;函数显示。imhist&#xff08;&#xff09;/numel可获…

ff

文章目录 1.变数与变量存档1.1变量类型转换1.1.1语法说明1.1.2单一字元1.1.3多元字元1.1.3.1说明1.1.3.2创建对象1.1.3.3逻辑运算和分配 1.2结构体1.2.1存储异构数据的方法1.2.2向结构添加信息2.2.2.1延伸拓展 1.3结构功能1.3.1功能基础语法1.3.2功能语法举例 1.4嵌套结构1.5元…

数字图像处理学习笔记 四 傅里叶变换和频率域滤波

目录 一 预备知识&#xff1a;傅里叶级数的介绍 1、一维傅里叶变换数学推导 2、图像傅里叶变换的物理意义 3、二维傅里叶变换 二、频率域滤波 1、频率域与空间域之间的关系 2、频率域滤波的基本步骤 3、使用频率域滤波平滑图像 4、使用频率域滤波锐化图像 5、选择率滤波…

第五章 DirectX 光照,材质和纹理(下)

在计算机三维世界中&#xff0c;想要模拟出真实的物体&#xff0c;让它的表面看起来更加逼真&#xff0c;就需要使用“纹理映射”技术&#xff0c;简单讲就是一种将2D图像映射到3D物体上面。一般来说&#xff0c;纹理是表示物体表面细节的一幅或多幅2D图像&#xff0c;也称为纹…

数组属性和基本操作

数组属性和基本操作 np.arange(start150,stop0,step-1) 将值倒过来 import numpy as np #matplotlib画图的&#xff0c;也可以读取图片 import matplotlib.pyplot as plt np.arange(150, 1, step-1) 输出 array([150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 1…

灰度增强和去噪

futurehello博客 http://blog.csdn.net/xixi_0921/article/details/50533487 整理笔记 一、前言 图像的灰度变换则不同&#xff0c;其对像素的计算仅仅依赖于当前像素和灰度变换函数。 灰度变换也被称为图像的点运算&#xff08;只针对图像的某一像素点&#xff09;是所有图…

Chapter_06 更改图像的对比度和亮度

文章目录 一. 本章目标① 目标② 理论③ 代码 二. 实例① 亮度和对比度调整② 伽马校正③ 纠正曝光不足的图像 三. 图形渲染中的伽马校正(附加资源) 一. 本章目标 ① 目标 本教程中我们将学习如何: 访问像素值用零初始化矩阵学习cv::saturate_cast是做什么的,以及它有什么用获…

MATLAB和Intislim,matlab灰阶变换函数imadjust和stretchlim的c++实现

灰阶变换 首先介绍一下灰阶变换&#xff0c;一幅图像数据本身在存储的数据结构上为一个二维的矩阵&#xff0c;即一幅图像为m*n个密密麻麻的像素点构成。 image.png 然后&#xff0c;这些像素点有着一个值&#xff0c;这个值成为灰度值或者亮度值&#xff0c;值的范围为[0,255]…

一个app开发周期是多久?快速开发才是主流

app的出现&#xff0c;极大的方便了人们的生活、社交和工作&#xff0c;各种各样的app为人们提供了各种便利的服务&#xff0c;真正让移动互联网服务大众。许多行业看到在app上爆发出的巨大潜能&#xff0c;都纷纷主动进行app制作来迎接移动互联网浪潮。 开发app一个很重的问题…

如何开发app软件?程序员揭秘你还没听过的1种方法

如何开发app软件&#xff1f;app软件开发需要多少钱&#xff1f;现在手机app这么火&#xff0c;很多企业都想开发一个app软件开拓市场。但是在开发app的时候往往会感觉力不从心&#xff0c;因为app开发门槛比较高&#xff0c;大家对app软件开发需要的技术、成本并不了解。 现…

商城APP软件开发要素有哪些

商城APP软件体系是当今电商行业经常会运用的商城体系&#xff0c;既支撑企业对企业的运营形式&#xff0c;也支撑卖家对消费者的运营形式&#xff0c;便是现在常见的B2C&#xff0c;B2B的电商形式APP&#xff0c;跟着现在的互联网的遍及现在这些电商都是成为了电商商家开展的不…

app软件怎么开发 盘点3种app制作方式

现在智能手机给大家的生活带来了很多便利&#xff0c;利用手机&#xff0c;随时随地看新闻、手机打车提前预定、网上订餐不用等、商家服务提前预约、学习内容随时看、购物更是随时买。各式各样的手机App&#xff0c;让生活方式方式了重大改变。 1、组建团队开发APP 自己有团队…

app应用软件开发流程是怎样的?

从入职这行业到创业已有 7 载&#xff0c;对 APP 产品开发的流程已经再熟悉不过了&#xff0c;现在把这几年积累的一些经验和大家分享一下&#xff0c;一个产品是怎么从想法一步一步落地为具体成品的&#xff0c;这个过程中会经历一些怎样的必要流程呢&#xff0c;下面大致说一…

三阶魔方傻瓜指南

三阶魔方20分钟完全自救指南——包学包会 前言 寒假宅在家里&#xff0c;闲来无事&#xff0c;偶得一个三阶魔方&#xff0c;便从网上找公式摸索。发现了很多版本&#xff0c;但是大多局部最优&#xff0c;缺少易于小白理解的全局最优方法。所以做次总结&#xff0c;集各家所…

C/C++FPS实战CSGO矩阵方框透视骨骼自瞄实战教程

C/CFPS实战CSGO矩阵方框透视骨骼自瞄实战教程

基于yolo5制作的csgo,ai自瞄

研究了几天&#xff0c;终于肝出来了&#xff0c;基本功能完美运行&#xff0c;晚点在训练一个专用模型。

警惕AI,我搭建了一个“枪枪爆头”的视觉AI自瞄程序,却引发了一场“山雨欲来”

前言 前段时间在网上看到《警惕AI外挂&#xff01;我写了一个枪枪爆头的视觉AI&#xff0c;又亲手“杀死”了它》 这个视频&#xff0c;引起了我极大的兴趣。 视频中提到&#xff0c;在国外有人给使命召唤做了个AI程序来实现自动瞄准功能。它跟传统外挂不一样&#xff0c;该程…

理解FPS游戏中的矩阵方框透视自瞄

​ 初识矩阵 其实矩阵是线性代数里面的说法 矩阵&#xff08;Matrix&#xff09;是一个按照长方阵列排列的复数或实数集合 [1] &#xff0c;最早来自于方程组的系数及常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出。 类似&#xff1a; 矩阵的乘法&#xff1a; …

手把手教你如何0基础编写基于AI机器视觉的--王者荣耀百里守约的自瞄程序,我家村头的傻X都能学会的教程!

先看看我在B站的效果视频 王者荣耀-百里守约-AI辅助自瞄研究 摘要&#xff1a;YoLo目标检测框架 PaddleDetection机器学习框架 不介绍上面的框架了&#xff0c;直入主题&#xff1a; 以下教程基于Windows10系统环境&#xff0c;Win7应该不太行。 考虑到大多数学生比较穷&a…

yolov5实现机器视觉ai自瞄,本人跑代码训练时总结下来的坑(参数设置,服务器使用,自动打标签,训练速度,显存使用率...)

想到啥些啥&#xff0c;都是些我遇到的&#xff0c;很坑&#xff0c;但偏偏又有点蠢的问题。 路过进来的朋友可以 ctrlF 搜一下有没有自己苦恼的问题。 1&#xff0c;训练的模型使用越小&#xff08;最小是yolov5n&#xff09;&#xff0c;帧数越高&#xff0c;自瞄间隔越短。…