(一) opencv和opencv-contrib的安装

(1.1)在桌面地底部的搜索栏,搜索命令提示符,点击并打开命令提示符

(1.2)依次输入命令并按回车pip install opencv-python==3.4.18.65 -i https://pypi.tuna.tsinghua.edu.cn/simple和pip install opencv-contrib-python==3.4.18.65 -i https://pypi.tuna.tsinghua.edu.cn/simple

(二)在pycharm软件中,用python语言,opencv库实现以下功能



此代码主要完成以下任务:

  1. 读取并显示一张本地图片
  2. 交互式控制窗口行为
  3. 输出图像的基础元信息

完整执行流程:

添加了逐行详细注释的完整代码及预期输出示例:

# ✅ 1. 导入必要的库
import cv2          # OpenCV库用于图像处理与计算机视觉任务
import numpy as np # NumPy库用于高效处理多维数组(图像本质是数组)# 📁 2. 读取本地图像文件
a = cv2.imread('1.jpg')  # 从当前工作目录读取名为'1.jpg'的图像文件
#   ▶️ 成功时返回一个NumPy数组(形状=[高度, 宽度, 通道数]),失败返回None# 🖥️ 3. 显示图像窗口
cv2.imshow('tu', a)      # 创建名为'tu'的窗口并显示图像a
#   ⚠️ 注意:此语句不会自动暂停,需配合waitKey()才能看到效果# ⏸️ 4. 等待用户按键输入
b = cv2.waitKey(0)       # 阻塞程序执行,直到用户按下任意键
#   🔑 参数0表示无限期等待,返回值为按下的键对应的ASCII码(本例未使用该值)# ✖️ 5. 关闭所有OpenCV窗口
cv2.destroyAllWindows() # 释放所有创建的GUI窗口资源# 📝 6-8. 输出图像元信息
print("图像形状(shape):", a.shape)    # 输出数组维度:[高, 宽, 通道数]
print("图像数据类型(dtype):", a.dtype) # 输出像素的数据类型(通常为uint8)
print("图像大小(size):", a.size)     # 输出总像素数(高×宽×通道数)
图像形状(shape): (480, 640, 3)
图像数据类型(dtype): uint8
图像大小(size): 921600


此代码主要完成以下任务:

  1. 灰度化处理与保存
  2. 图像区域裁剪与可视化对比
  3. 图像元信息输出
  4. 多窗口交互式显示

完整执行流程:

添加了逐行详细注释的完整代码及预期输出示例:

# -*- coding: utf-8 -*-
import cv2  # 导入OpenCV库,用于图像处理与计算机视觉任务# ==================== 第一阶段:灰度化处理 & 基础信息输出 ====================
# 📷 1. 以灰度模式读取图像
b = cv2.imread(filename=r'./1.jpg', flags=cv2.IMREAD_GRAYSCALE)  # ✅ 关键参数:flags=cv2.IMREAD_GRAYSCALE
#   ↳ 功能:将输入图像转换为单通道灰度图(而非默认的BGR三通道)
#   ↳ 返回值:NumPy数组,形状为 [高度, 宽度](二维数组)# 🖥️ 2. 显示灰度图像窗口
cv2.imshow(winname='zz', mat=b)  # 创建名为 'zz' 的窗口并显示灰度图 b
#   ↳ 注意:此语句不会自动暂停,需配合 waitKey() 才能看到效果# ⏸️ 3. 等待用户按键(防止窗口一闪而过)
a = cv2.waitKey(0)  # 阻塞程序执行,直到用户按下任意键
#   ↳ 参数 0 表示无限期等待,返回值为按下的键对应的 ASCII 码(本例未使用该值)# ✖️ 4. 关闭所有OpenCV窗口
cv2.destroyAllWindows()  # 释放所有创建的GUI窗口资源# 📝 5-7. 输出灰度图的元信息
print("图像形状(shape):", b.shape)    # 输出数组维度:[高度, 宽度](灰度图为二维)
print("图像数据类型(dtype):", b.dtype) # 输出像素的数据类型(通常为 uint8)
print("图像大小(size):", b.size)      # 输出总像素数(高度 × 宽度)# 💾 8. 保存灰度图到文件
cv2.imwrite(filename='timg98_GRAY.jpg', img=b)  # 将灰度图 b 保存为新文件
#   ↳ 注意:若文件已存在会被覆盖# ==================== 第二阶段:图像裁剪 & 双窗口对比 ====================
# 📁 9. 重新读取原始彩色图像(未指定 flags 参数,默认按 BGR 三通道读取)
a = cv2.imread(r'./1.jpg')  # 返回 BGR 三通道图像(形状为 [高度, 宽度, 3])# ✂️ 10. 裁剪图像区域(基于NumPy数组切片)
b = a[30:230, 100:300]  # 选取矩形区域:纵向 30~230px,横向 100~300px
#   ↳ Python切片规则:起始位置包含,终止位置不包含 → 实际裁剪尺寸:高=200px (230-30),宽=200px (300-100)# 🖥️ 11-12. 同时显示原图与裁剪结果
cv2.imshow(winname='yuantu', mat=a)   # 窗口标题 "yuantu"(原图)
cv2.imshow(winname='qiepian', mat=b)  # 窗口标题 "qiepian"(裁剪片段)# ⏸️ 13. 等待用户按键(保持双窗口可见)
cv2.waitKey(0)  # 阻塞程序执行,直到用户按下任意键# ✖️ 14. 关闭所有OpenCV窗口
cv2.destroyAllWindows()  # 释放所有创建的GUI窗口资源
图像形状(shape): (480, 640)       # 灰度图形状(高 x 宽)
图像数据类型(dtype): uint8        # 像素类型(0~255 的无符号整数)
图像大小(size): 307200           # 总像素数 = 480 × 640


此代码主要完成以下任务:

实时获取摄像头视频流 → 转灰度 → 显示画面

完整执行流程:

 

  1. 打开摄像头:通过 cv2.VideoCapture(0) 打开默认摄像头(编号0通常是笔记本内置摄像头)

  2. 检查摄像头是否成功打开:如果失败,打印“无法打开视频文件”并退出程序

  3. 实时读取视频帧:在一个无限循环中,逐帧读取摄像头画面

  4. 将彩色画面转为灰度:使用 cv2.cvtColor 把每一帧从彩色(BGR)转换成灰度图像

  5. 实时显示灰度画面:通过 cv2.imshow 在一个名为“Video”的窗口中显示灰度画面

  6. 按 ESC 键退出:如果用户按下键盘上的 ESC 键(ASCII码27),则跳出循环

  7. 释放资源:关闭摄像头并销毁所有 OpenCV 窗口,避免资源泄露

总结:这段代码会打开你的摄像头,把实时画面变成黑白色,并持续显示,直到你按下 ESC 键退出

添加了逐行详细注释的完整代码及预期输出示例:

import cv2                       # 导入 OpenCV 库
video_capture = cv2.VideoCapture(0)  # 打开默认摄像头(设备索引 0)
if not video_capture.isOpened():     # 检查摄像头是否成功打开print("无法打开视频文件")        # 若打开失败,打印提示信息exit()                          # 退出程序
while True:                         # 无限循环,持续读取摄像头画面ret, frame = video_capture.read()  # 读取一帧:ret 表示是否成功,frame 为图像数据if not ret:                     # 如果读取失败(无画面)break                       # 跳出循环frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)  # 将彩色帧转换为灰度图像cv2.imshow('Video', frame)      # 在名为 'Video' 的窗口中显示当前帧if cv2.waitKey(1) == 27:        # 等待 1 毫秒;若用户按下 ESC(ASCII 27),则跳出循环break
video_capture.release()             # 释放摄像头资源
cv2.destroyAllWindows()             # 关闭所有由 OpenCV 创建的窗口

额外扩充:

  1. cv2.VideoCapture('aiweier.mp4') → 初始化视频捕获对象
  2. isOpened() → 校验文件可读性
  3. while True + read() → 逐帧读取视频流
  4. cvtColor(..., COLOR_BGR2GRAY) → 实时转灰度图
  5. imshow() + waitKey(1) → 动态显示画面 & 响应键盘事件
  6. release() / destroyAllWindows() → 资源清理
    import cv2  # 导入 OpenCV 库,用于视频和图像处理# 创建 VideoCapture 对象,打开名为 'aiweier.mp4' 的视频文件
    video_capture = cv2.VideoCapture('aiweier.mp4')# 检查视频文件是否成功打开
    if not video_capture.isOpened():print("无法打开视频文件")  # 如果无法打开,输出错误提示exit()  # 退出程序# 无限循环,用于逐帧读取和显示视频
    while True:# 从视频中读取下一帧ret, frame = video_capture.read()# 如果读取失败(如到达视频末尾),则跳出循环if not ret:break# 将当前帧从 BGR 彩色图像转换为灰度图像frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)# 在名为 'Video' 的窗口中显示当前帧cv2.imshow('Video', frame)# 等待键盘输入,等待时间为 1 毫秒# 如果按下 ESC 键(ASCII 码为 27),则跳出循环if cv2.waitKey(1) == 27:break# 释放 VideoCapture 对象,关闭视频文件
    video_capture.release()# 销毁所有 OpenCV 创建的窗口
    cv2.destroyAllWindows()

代码中去除以下代码,代码运行结果为彩色图片

 # 将当前帧从 BGR 彩色图像转换为灰度图像frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)



此代码主要完成以下任务:

从彩色图像中分离并可视化其蓝(B)、绿(G)、红(R)三个独立颜色通道

 

  1. 颜色空间特性

    • OpenCV 默认使用 BGR 而非 RGB 顺序存储颜色图像,因此:
      • img[:, :, 0] → 蓝色通道
      • img[:, :, 1] → 绿色通道
      • img[:, :, 2] → 红色通道
  2. 单通道显示原理

    • 每个颜色通道本质上是一个二维矩阵(高度×宽度),值范围通常为 0-255
    • 当用 imshow() 显示单通道时,OpenCV 自动将其解释为 8位灰度图像,其中:
      • 0 = 纯黑 → 该颜色成分完全缺失
      • 255 = 纯白 → 该颜色成分达到最大强度
  3. 两种通道分离方式对比

    • 切片法 (img[:, :, n]):直观高效,适合少量通道提取
    • cv2.split():返回包含所有通道的列表,适用于批量处理多通道场景

完整执行流程:

添加了逐行详细注释的完整代码及预期输出示例:

import cv2
# 1. 读取图像(默认 BGR 顺序)
img = cv2.imread('1.jpg')
if img is None:raise FileNotFoundError('图像加载失败,请检查路径')
# 2. 方法一:直接切片提取单个通道
b_ch = img[:, :, 0]   # 蓝色通道
g_ch = img[:, :, 1]   # 绿色通道
r_ch = img[:, :, 2]   # 红色通道
# 3. 方法二:用 cv2.split 一次拆出三个通道
# b_ch, g_ch, r_ch = cv2.split(img)
# 4. 分别显示三个通道(单通道图像默认以灰度形式呈现)
cv2.imshow('Blue channel', b_ch)
cv2.imshow('Green channel', g_ch)
cv2.imshow('Red channel', r_ch)
# 5. 等待按键(0 表示无限等待,或给足够大的毫秒数)
cv2.waitKey(0)
# 6. 关闭所有窗口
cv2.destroyAllWindows()



此代码主要完成以下任务:

从输入图像中提取并突出显示蓝色通道的信息

完整执行流程:

添加了逐行详细注释的完整代码及预期输出示例:

# -*- coding: utf-8 -*-
"""
功能:读取一张彩色图,只保留蓝色通道,其余通道置 0,并显示结果
"""# 1. 导入库
import cv2
import numpy as np      # 预留,方便后续扩展# 2. 读取原始图像(默认 BGR 顺序)
img = cv2.imread('1.jpg')          # 在当前工作目录下查找 1.jpg
if img is None:                    # 读取失败时 img 为 Noneraise FileNotFoundError('图像加载失败,请检查 1.jpg 是否存在及路径是否正确')# 3. 复制一份,避免修改原图
img_blue = img.copy()              # 得到与原图同尺寸、同内容的备份# 4. 只保留蓝色通道:将绿色、红色通道全部置 0
#   OpenCV 中 BGR 顺序:0-蓝色(B),1-绿色(G),2-红色(R)
img_blue[:, :, 1] = 0            # 绿色通道全部设为 0
img_blue[:, :, 2] = 0            # 红色通道全部设为 0
# 此时 img_blue 中仅 B 通道有值,其余两通道为 0,整体呈蓝色调# 5. 显示结果
cv2.imshow('Blue-only color image', img_blue)  # 创建一个窗口并显示处理后的图像
cv2.waitKey(0)                                 # 无限等待,直到键盘任意按键
cv2.destroyAllWindows()                        # 销毁所有已创建的窗口



此代码主要完成以下任务:

演示如何使用 OpenCV 分离图像的 BGR 三通道并重新合并回原始彩色图像

完整执行流程:

步骤代码行作用(一句话说明)
1import cv2引入 OpenCV 库,准备图像处理
2img = cv2.imread('1.jpg')把当前目录里的 1.jpg 读进内存,得到 BGR 彩色矩阵
3if img is None:若文件不存在或读取失败,立即报错并终止程序
4b, g, r = cv2.split(img)把彩色图拆成 3 张灰度图:蓝通道、绿通道、红通道
5merged = cv2.merge((b, g, r))把这三张灰度图按 B-G-R 顺序重新合并成一张与原图相同的彩色图
6cv2.imshow('Merged BGR', merged)打开窗口,标题为 Merged BGR,显示合并后的彩色图
7cv2.waitKey(0)暂停程序,等待用户按任意键
8cv2.destroyAllWindows()关闭所有 OpenCV 窗口,释放资源,程序结束

添加了逐行详细注释的完整代码及预期输出示例:

import cv2                       # 导入 OpenCV 库,用于图像读写与显示# 1. 读取图像(默认 BGR 顺序)
img = cv2.imread('1.jpg')        # 从当前工作目录加载 '1.jpg',返回三维 BGR 数组
if img is None:                  # 检查是否加载成功raise FileNotFoundError('图片路径错误或文件不存在')  # 若失败,立即抛出异常并终止程序# 2. 分离 BGR 三通道
b, g, r = cv2.split(img)         # 把 BGR 图像拆成 3 个单通道数组:b(蓝)、g(绿)、r(红)# 等价于 b = img[:, :, 0]; g = img[:, :, 1]; r = img[:, :, 2]# 3. 重新合并三通道,得到与原图一致的彩色图
merged = cv2.merge((b, g, r))    # 把 b、g、r 三个二维数组按顺序叠成一幅新的三通道彩色图# 也可写成 cv2.merge([b, g, r])# 4. 显示结果
cv2.imshow('Merged BGR', merged) # 创建名为 'Merged BGR' 的窗口并展示合并后的彩色图
cv2.waitKey(0)                   # 无限等待键盘事件;按任意键后继续
cv2.destroyAllWindows()          # 销毁所有已打开的 OpenCV 窗口,释放资源



此代码主要完成以下任务:

对一张图片的局部区域进行随机着色并显示结果

完整执行流程:

步骤代码行作用说明
1import cv2导入 OpenCV 库,用于图像读写与显示
2import numpy as np导入 NumPy 库,方便生成随机数组并进行矩阵操作
3a = cv2.imread('1.jpg')读取磁盘文件 1.jpg,将其加载为 NumPy 数组并存入变量 a
4a[100:200, 200:300] = np.random.randint(0, 256, (100, 100, 3))在 a 的指定区域(行 100–199、列 200–299)上覆盖随机彩色像素,实现打码/马赛克效果
5cv2.imshow('masaike', a)新建名为 masaike 的窗口,并在其中显示处理后的图像 a
6cv2.waitKey(1000000)等待键盘事件,最长约 1000 秒;期间窗口保持显示
7cv2.destroyAllWindows()关闭所有由 OpenCV 创建的窗口,释放资源

添加了逐行详细注释的完整代码及预期输出示例:

import cv2           # 导入 OpenCV 库,用于图像的读取、显示与保存
import numpy as np   # 导入 NumPy 库,用于高效的数组操作与随机数生成# 1. 从当前目录读取图像文件 1.jpg,返回一个三维的 BGR 图像数组
a = cv2.imread('1.jpg')# 2. 在图像 a 的指定区域(行 100~199,列 200~299)上覆盖随机彩色像素块
#    np.random.randint(0, 256, (100, 100, 3)) 生成形状为 (100, 100, 3) 的随机整数矩阵,
#    每个元素取值范围 [0, 255],对应 BGR 三通道,实现“马赛克”或“打码”效果
a[100:200, 200:300] = np.random.randint(0, 256, (100, 100, 3))# 3. 创建一个名为 'masaike' 的窗口,并在其中显示处理后的图像 a
cv2.imshow('masaike', a)# 4. 等待键盘事件,最长等待 1 000 000 毫秒(≈ 1000 秒)
#    期间窗口保持显示,按任意键可提前结束等待
cv2.waitKey(1000000)# 5. 销毁所有由 OpenCV 创建的窗口,释放资源
cv2.destroyAllWindows()



此代码主要完成以下任务:

将一张图片(1.jpg)的特定区域复制到另一张图片(mimi.jpg)的指定位置,并同步显示两张图片的效果
完整执行流程:

步骤代码作用说明
1import cv2载入 OpenCV 库,提供图像读写与显示功能
2a = cv2.imread('1.jpg')读取图像文件 1.jpg 并存储到变量 a
3b = cv2.imread('mimi.jpg')读取图像文件 mimi.jpg 并存储到变量 b
4b[200:350, 200:350] = a[50:200, 100:250]将 a 中第 50–199 行、100–249 列的像素区域复制到 b 的第 200–349 行、200–349 列,实现区域替换;要求两块区域尺寸一致(150×150)
5cv2.imshow('b', b)创建名为 b 的窗口并显示处理后的图像 b
6cv2.imshow('a', a)创建名为 a 的窗口并显示原始图像 a,方便对比查看
7cv2.waitKey(100000)等待键盘事件,最长约 100 秒;按任意键可提前结束
8cv2.destroyAllWindows()关闭所有 OpenCV 创建的窗口,释放资源


添加了逐行详细注释的完整代码及预期输出示例:

import cv2                            # 1. 导入 OpenCV 库,用于图像读写与显示# 2. 读取两张图片
a = cv2.imread('1.jpg')               # 读取 1.jpg,存入变量 a(原始图像)
b = cv2.imread('mimi.jpg')            # 读取 mimi.jpg,存入变量 b(目标图像)# 3. 区域复制:将 a 中第 50~199 行、100~249 列的 150×150 像素区域
#    覆盖到 b 中第 200~349 行、200~349 列的位置
#    注意:源区域与目标区域尺寸必须一致(都是 150×150)
b[200:350, 200:350] = a[50:200, 100:250]# 4. 显示处理后的结果
cv2.imshow('b', b)                    # 创建名为 "b" 的窗口,显示替换后的图像 b
cv2.imshow('a', a)                    # 创建名为 "a" 的窗口,显示原始图像 a,便于对比cv2.waitKey(100000)                   # 5. 等待键盘事件,最长约 100 秒;按任意键可提前退出
cv2.destroyAllWindows()               # 6. 关闭所有 OpenCV 创建的窗口,释放资源


 


此代码主要完成以下任务:

主要演示了 OpenCV 中两种不同的图像缩放方法,并通过窗口对比展示原始图像与缩放后的效果

完整执行流程:

1.读取原始图像 → 2. 尝试两种缩放方式 → 3. 打印原始图像尺寸 → 4. 双窗口对比显示 → 5. 持久化展示结果

步骤代码作用说明
1import cv2导入 OpenCV 库,提供图像读写与显示功能
2a = cv2.imread('1.jpg')读取文件 1.jpg,将其加载为 NumPy 数组并存入变量 a
3b = cv2.imread('mimi.jpg')读取文件 mimi.jpg,将其加载为 NumPy 数组并存入变量 b
4b[200:350, 200:350] = a[50:200, 100:250]将 a 中第 50–199 行、100–249 列的 150×150 像素区域复制到 b 的第 200–349 行、200–349 列,实现区域替换(要求两区域尺寸一致)
5cv2.imshow('b', b)创建名为 “b” 的窗口,显示经过替换处理后的图像 b
6cv2.imshow('a', a)创建名为 “a” 的窗口,显示原始图像 a,方便与结果对比
7cv2.waitKey(100000)等待键盘事件,最长约 100 秒;按任意键可提前结束等待
8cv2.destroyAllWindows()关闭所有由 OpenCV 创建的窗口,释放资源


添加了逐行详细注释的完整代码及预期输出示例:

import cv2                # 1. 导入 OpenCV 库,用于图像处理与显示# 2. 读取图像文件 mimi.jpg,返回三维 BGR 数组
a = cv2.imread('mimi.jpg')# 3. 第一次缩放:强制把图像调整为指定尺寸
#    dsize=(200, 600) 表示输出图像宽度 200 像素,高度 600 像素
#    注意:此行计算出的 a_new 会被下一行覆盖,实际不会生效
a_new = cv2.resize(a, dsize=(200, 600))  # 宽、高# 4. 第二次缩放:按相对比例缩放
#    dsize=None 表示不使用绝对尺寸,而是根据 fx、fy 进行缩放
#    fx=1.5 → 宽度放大为原来的 1.5 倍
#    fy=0.5 → 高度缩小为原来的 0.5 倍
a_new = cv2.resize(a, dsize=None, fx=1.5, fy=0.5)# 5. 打印原图 a 的形状(行数=高,列数=宽,第 3 维=通道数 BGR)
print(a.shape)  # 高、宽、通道数# 6. 分别显示原图和缩放后的图像
cv2.imshow('a', a)        # 显示原图
cv2.imshow('a_new', a_new)  # 显示缩放后的图像# 7. 等待键盘事件,最长约 100 秒;按任意键可提前退出
cv2.waitKey(100000)# 8. 关闭所有 OpenCV 创建的窗口,释放资源
cv2.destroyAllWindows()

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/92464.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/92464.shtml
英文地址,请注明出处:http://en.pswp.cn/web/92464.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SimpleMindMap:一个强大的Web思维导图

在信息爆炸的时代,如何高效地组织、记忆和表达复杂信息成为一项关键技能。思维导图作为一种强大的可视化工具,能够帮助我们理清思路、激发创意并提高学习效率。最近在逛github的时候发现了一个开源的思维导图工具SimpleMindMap,和家人们分享下…

正确使用 JetBrains

来自穷鬼的 marker !关键也不是全靠它吃饭,所以……请鄙视我就对了!2023.2.6 和 MybatisX 1.7.3 兼容性好像有些问题,会报错。想一想降级 MybatisX 不如升级一下 Idea。So, do this.官方下载安装包并装之。然后解锁无需下载文件、…

0_外设学习_ESP8266+云流转(no 0基础)

1、环境要求 2个ESP8266模块、2个USB转ESP8266,通过ESP8266_A-->(阿里云)云流转-->ESP8266_B,实现ESP8266_A发布话题,ESP8266_B订阅该话题。 2、阿里云云流转配置 1、基础要求: 添加1个产品&#xf…

AI漫画翻译器-上传图片自动翻译,支持多语言

本文转载自:AI漫画翻译器-上传图片自动翻译,支持多语言 - Hello123 ** 一、AI 漫画翻译器的核心定位 AI 漫画翻译器是专为漫画爱好者设计的智能翻译平台,通过深度学习技术实现漫画文本的精准识别与本地化转换。它能在保留原图排版和艺术风格…

有效介电常数

有效介电常数:如果导体的横截面被介质完全包裹,位于导体之间的电力线(如带状线)就会感受到相同的介电常数。然而,对于微带线、双绞线或共面线,导体周围的介质不是均匀的,所以一些电力线穿过空气,而另一些则穿过介质。图…

51c视觉~合集16

自己的原文哦~ https://blog.51cto.com/whaosoft/14117000 #港大成立计算与数据科学学院,计算机统计双剑合璧 刚刚,港大成立新的计算与数据科学学院,由计算机科学系和统计学系合并。马毅教授被任命为学院首任院长。 马毅教授官宣…

惯量时间常数 H 与转动惯量 J 的关系解析

惯量时间常数 H 与转动惯量 J 的关系解析 在电力系统稳定分析、旋转机械动力学等领域,惯量时间常数(H) 和 转动惯量(J) 是描述旋转体惯性特性的两个核心参数。二者虽然出发点不同,但在数学和物理层面具有紧…

DeepSeek-V3/R1 架构深度剖析:国产大模型的创新突围之路

本文深入解析 DeepSeek-V3/R1 的核心架构设计,揭示其如何在模型效率、推理性能与知识处理等维度实现突破,成为中文大模型领域的标杆之作。 引言:大模型竞技场中的"中国速度" #mermaid-svg-9Kk7tHp57CilWIFU {font-family:"trebuchet ms",verdana,arial,…

【从0到1制作一块STM32开发板】5. 整体布局

在之前的学习中,我偏向的多是嵌入式软件开发的工作,如果想要自己diy一款具备特定功能的嵌入式工具的话,还需要具备画板子的能力。但由于我目前还没学模电,故我打算直接找个b站的学习视频先跟着画个板子出来,简单理解各…

nflsoi 8.8 题解

感觉这把难,不过今天状态比较差,头昏昏的。怎么后面几道蓝题别人光速切掉了?不过赛后再来看感觉也不算特别麻烦的题目。 C.#11698 双循环锦标赛 / TopCoder 10687 The Basketball Div One 题意 约翰与布鲁斯对团体体育赛事颇有研究&#xff0…

面向真实场景的定制化图像降质模型设计方案

面向真实场景的定制化图像降质模型设计方案 1. 核心思路:从真实图像中学习退化模型 1.1 问题定义:合成数据与真实数据的域差距 在超分辨率(Super-Resolution, SR)算法的实际应用中,一个核心挑战源于训练数据与真实测…

计算机网络:一个 IP 地址可以同时属于 A 类、B 类或 C 类吗?

一个IP地址不可以同时属于A类、B类或C类。A类、B类、C类IP地址的划分有明确的规则,通过网络位的最高几位即可唯一确定其类别,不存在重叠的可能。 IP地址分类的核心规则(针对IPv4) IPv4地址由32位二进制数组成,通常分为…

利用哥斯拉(Godzilla)进行文件上传漏洞渗透实战分析

利用哥斯拉(Godzilla)进行文件上传漏洞渗透实战分析本实验通过DVWA靶机环境演示如何利用哥斯拉工具进行文件上传漏洞的渗透测试,最终获取目标服务器控制权限。实验环境 攻击工具:哥斯拉(Godzilla) v4.0.1靶机地址:http://192.168.3.101/dvwa目…

MMBFJ310LT1G一款N沟道JFE 晶体管适用于高频放大器和振荡器等射频应用MMBFJ310LT1

MMBFJ310LT1G 是一款 N沟道JFET晶体管 ,适用于高频放大器和振荡器等射频应用。以下是其核心性能参数:基本参数 •‌漏源击穿电压‌:25V ‌•栅源击穿电压‌:25V ‌•漏源电流(Vgs0V)‌:24mA至60…

【洛谷题单】--分支结构(二)

🔥个人主页:草莓熊Lotso 🎬作者简介:C研发方向学习者 📖个人专栏: 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言:生活是默默的坚持,毅力是永久的…

Django模型开发全解析:字段、元数据与继承的实战指南

目录 一、字段类型:精准匹配业务需求 1. 字符型字段的“长短之争” 2. 数值型字段的“范围控制” 3. 时间日期型字段的“自动记录” 4. 布尔型字段的“三态处理” 5. 文件字段的“存储策略” 二、元数据:控制数据库与行为的“幕后玩家” 1. 数据…

使用 Grunt 替换 XML 文件中的属性值

使用 Grunt 替换 XML 文件中的属性值 在 Grunt 中替换 XML 文件的属性值可以通过几种方式实现,以下是详细的解决方案: 方法1:使用 grunt-xmlpoke 插件(推荐) 1. 安装插件 npm install grunt-xmlpoke --save-dev2. 配置…

docker缓存目录转移设置和生效过程

docker缓存目录默认在系统盘/var/lib/docker,存在系统盘打满,导致系统崩溃问题。 这里尝试将docker缓存目录转移到数据存储盘/store/docker。 1 查看现有缓存目录 docker info 一般情况下是 Docker Root Dir: /var/lib 2 停止服务 systemctl stop dock…

滴滴云原生可观测 HUATUO 开源项目正式入驻 CCF

8月2日,滴滴宣布其开源云原生操作系统可观测性项目HUATUO正式入驻中国计算机学会(CCF),加入其重点孵化项目序列。本次入驻不仅体现了滴滴长期践行开源共建共享的理念,也希望通过行业协作,共同推动可观测领域…

python学智能算法(三十二)|SVM-软边界理解

【1】引言 前序学习进程中,已经对SVM的KKT条件,Slater条件等进行了探究,但这些都是完美情况,数据线性可分。 实际生活中需要处理的数据往往因为各式各样的原因会不可分,所以必须学会容忍一些小错误,完美的…