Python+OpenCV 计算机视觉:从零入门 AI 视觉开发

📝 本章学习目标:从零掌握 Python+OpenCV 计算机视觉基础,从环境搭建到实战项目,覆盖图像处理、特征检测、目标识别、视频分析全流程,可直接落地 AI 视觉开发项目。

一、引言:为什么计算机视觉是 AI 核心赛道

1.1 背景与意义

计算机视觉是让机器看懂世界的核心技术,是人工智能最落地、应用最广泛的方向。从手机人脸识别、自动驾驶、工业质检,到安防监控、医疗影像分析,都离不开计算机视觉。

OpenCV 作为全球最流行的开源计算机视觉库,支持 Python、C++、Java 等多语言,拥有 2500 + 优化算法,是入门视觉开发的最佳选择。

据行业数据,计算机视觉市场规模年均增速超 20%,AI 视觉工程师岗位缺口超百万,掌握 Python+OpenCV,等于拿到 AI 开发的入场券

1.2 本章结构概览

plaintext

复制代码
环境搭建 → 基础操作 → 图像处理 → 特征检测 → 目标识别 → 视频分析 → 实战项目 → 常见问题 → 未来趋势

二、核心概念解析

2.1 基本定义

概念一:计算机视觉

让计算机从图像 / 视频中提取、分析、理解信息,实现类似人类视觉的感知能力,包括图像分类、目标检测、语义分割、实例分割、姿态估计等。

概念二:OpenCV

开源计算机视觉库,由英特尔公司发起,支持跨平台、跨语言,专注于实时视觉处理,是 AI 视觉开发的基础工具。

概念三:数字图像

计算机中的图像由像素组成,分为:

  • 灰度图:单通道,像素值 0-255,0 纯黑、255 纯白
  • 彩色图:三通道(RGB),每个通道 0-255,组合出 1600 万 + 颜色
  • 二值图:只有 0 和 255 两种像素,用于轮廓提取、形态学操作

2.2 关键术语解释

  • 像素:图像的最小单位,决定图像清晰度
  • 通道:图像的颜色维度,灰度图 1 通道,彩色图 3 通道
  • 卷积:视觉算法核心操作,用于特征提取
  • 阈值:像素分割临界值,用于二值化处理
  • 轮廓:图像中连续的边界曲线,用于目标定位
  • 特征点:图像中具有独特性的点,用于匹配、跟踪

2.3 技术架构概览

plaintext

复制代码
┌─────────────────────────────────────────┐
│              开发环境层                  │
│        Python + OpenCV + Matplotlib      │
├─────────────────────────────────────────┤
│              基础操作层                  │
│      读取/显示/保存/图像属性获取         │
├─────────────────────────────────────────┤
│              图像处理层                  │
│  灰度转换/滤波/阈值/形态学/边缘检测       │
├─────────────────────────────────────────┤
│              视觉算法层                  │
│  特征检测/目标识别/视频分析/人脸检测      │
├─────────────────────────────────────────┤
│              实战应用层                  │
│    工业质检、安防监控、图像识别项目      │
└─────────────────────────────────────────┘

三、环境搭建:零失败配置教程

3.1 安装 Python 与依赖库

python

运行

bash 复制代码
# 1. 安装OpenCV
pip install opencv-python  # 主库
pip install opencv-contrib-python  # 扩展库(含特征检测、人脸算法)

# 2. 安装辅助库
pip install numpy  # 数值计算
pip install matplotlib  # 图像显示
pip install pillow  # 图像处理

3.2 环境测试代码

python

运行

python 复制代码
# 导入库
import cv2
import numpy as np

# 打印版本(验证安装成功)
print("OpenCV版本:", cv2.__version__)
print("NumPy版本:", np.__version__)

# 结果示例:OpenCV版本:4.9.0,NumPy版本:1.26.0

四、OpenCV 基础操作(核心必学)

4.1 图像读取、显示、保存

python

运行

python 复制代码
import cv2
import numpy as np

# ---------------------- 1. 读取图像 ----------------------
# cv2.imread(路径, 读取模式)
# 模式:cv2.IMREAD_COLOR(彩色图)、cv2.IMREAD_GRAYSCALE(灰度图)、cv2.IMREAD_UNCHANGED(含透明通道)
img = cv2.imread("test.jpg", cv2.IMREAD_COLOR)

# 判断是否读取成功
if img is None:
    print("图像读取失败,请检查路径!")
else:
    print("图像读取成功")

# ---------------------- 2. 显示图像 ----------------------
# cv2.imshow(窗口名, 图像)
cv2.imshow("Original Image", img)

# 等待按键输入(0表示无限等待)
cv2.waitKey(0)

# 释放所有窗口
cv2.destroyAllWindows()

# ---------------------- 3. 保存图像 ----------------------
# cv2.imwrite(保存路径, 图像)
cv2.imwrite("save_image.jpg", img)
print("图像保存成功")

4.2 获取图像属性

python

运行

python 复制代码
import cv2

# 读取图像
img = cv2.imread("test.jpg")

# 获取图像属性:(高度, 宽度, 通道数)
height, width, channels = img.shape
print(f"图像高度:{height}")
print(f"图像宽度:{width}")
print(f"通道数:{channels}")

# 获取像素总数
pixel_count = img.size
print(f"像素总数:{pixel_count}")

# 获取数据类型
dtype = img.dtype
print(f"数据类型:{dtype}")

4.3 像素操作与修改

python

运行

python 复制代码
import cv2
import numpy as np

# 读取彩色图像
img = cv2.imread("test.jpg")

# ---------------------- 1. 获取单个像素 ----------------------
# 格式:[y坐标, x坐标, 通道]
pixel = img[100, 100]
print("坐标(100,100)的像素值(BGR):", pixel)

# 获取单通道像素(B通道)
b_pixel = img[100, 100, 0]
print("B通道像素值:", b_pixel)

# ---------------------- 2. 修改单个像素 ----------------------
# 将(100,100)像素改为红色(BGR格式:红=0,0,255)
img[100, 100] = [0, 0, 255]

# ---------------------- 3. 修改区域像素 ----------------------
# 绘制白色矩形(x1:x2, y1:y2)
img[50:150, 50:150] = [255, 255, 255]

# 显示结果
cv2.imshow("Pixel Edit", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

五、图像处理核心技术(实战重点)

5.1 色彩空间转换

python

运行

python 复制代码
import cv2
import numpy as np

# 读取彩色图像
img = cv2.imread("test.jpg")

# ---------------------- 1. 彩色转灰度 ----------------------
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# ---------------------- 2. BGR转HSV(颜色识别专用) ----------------------
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# ---------------------- 3. BGR转RGB ----------------------
rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# 显示结果
cv2.imshow("Original", img)
cv2.imshow("Gray", gray)
cv2.imshow("HSV", hsv)
cv2.waitKey(0)
cv2.destroyAllWindows()

5.2 图像滤波(去噪、平滑)

python

运行

python 复制代码
import cv2
import numpy as np

# 读取图像
img = cv2.imread("test.jpg")

# ---------------------- 1. 均值滤波 ----------------------
# cv2.blur(图像, 卷积核大小)
blur = cv2.blur(img, (5, 5))

# ---------------------- 2. 高斯滤波(去噪效果最好) ----------------------
# cv2.GaussianBlur(图像, 卷积核大小, 标准差)
gaussian = cv2.GaussianBlur(img, (5, 5), 0)

# ---------------------- 3. 中值滤波(去除椒盐噪声) ----------------------
# cv2.medianBlur(图像, 卷积核大小)
median = cv2.medianBlur(img, 5)

# ---------------------- 4. 双边滤波(保留边缘) ----------------------
# cv2.bilateralFilter(图像, 直径, 颜色标准差, 空间标准差)
bilateral = cv2.bilateralFilter(img, 9, 75, 75)

# 显示结果
cv2.imshow("Original", img)
cv2.imshow("Blur", blur)
cv2.imshow("Gaussian", gaussian)
cv2.imshow("Median", median)
cv2.imshow("Bilateral", bilateral)
cv2.waitKey(0)
cv2.destroyAllWindows()

5.3 阈值处理(二值化)

python

运行

python 复制代码
import cv2
import numpy as np

# 读取灰度图
img = cv2.imread("test.jpg", 0)

# ---------------------- 1. 简单阈值 ----------------------
# cv2.threshold(图像, 阈值, 最大值, 类型)
ret, thresh1 = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)  # 二值化
ret, thresh2 = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY_INV)  # 反二值化
ret, thresh3 = cv2.threshold(img, 127, 255, cv2.THRESH_TRUNC)  # 截断
ret, thresh4 = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO)  # 取零

# ---------------------- 2. 自适应阈值(处理光照不均) ----------------------
# cv2.adaptiveThreshold(图像, 最大值, 自适应方法, 阈值类型, 块大小, 常数)
adaptive = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)

# 显示结果
cv2.imshow("Gray", img)
cv2.imshow("Binary", thresh1)
cv2.imshow("Adaptive", adaptive)
cv2.waitKey(0)
cv2.destroyAllWindows()

5.4 边缘检测

python

运行

python 复制代码
import cv2
import numpy as np

# 读取图像
img = cv2.imread("test.jpg")
# 转灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 高斯滤波去噪
blur = cv2.GaussianBlur(gray, (5, 5), 0)

# ---------------------- Canny边缘检测(最常用) ----------------------
# cv2.Canny(图像, 最小阈值, 最大阈值)
edges = cv2.Canny(blur, 50, 150)

# 显示结果
cv2.imshow("Original", img)
cv2.imshow("Edges", edges)
cv2.waitKey(0)
cv2.destroyAllWindows()

5.5 形态学操作(膨胀、腐蚀、开闭运算)

python

运行

python 复制代码
import cv2
import numpy as np

# 读取二值图
img = cv2.imread("test_binary.jpg", 0)
# 定义卷积核
kernel = np.ones((5, 5), np.uint8)

# ---------------------- 1. 腐蚀 ----------------------
erosion = cv2.erode(img, kernel, iterations=1)

# ---------------------- 2. 膨胀 ----------------------
dilation = cv2.dilate(img, kernel, iterations=1)

# ---------------------- 3. 开运算(先腐蚀后膨胀,去小噪点) ----------------------
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

# ---------------------- 4. 闭运算(先膨胀后腐蚀,填小孔) ----------------------
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

# 显示结果
cv2.imshow("Original", img)
cv2.imshow("Erosion", erosion)
cv2.imshow("Dilation", dilation)
cv2.imshow("Opening", opening)
cv2.imshow("Closing", closing)
cv2.waitKey(0)
cv2.destroyAllWindows()

六、特征检测与目标定位

6.1 轮廓检测

python

运行

python 复制代码
import cv2
import numpy as np

# 读取图像
img = cv2.imread("test.jpg")
# 复制原图用于绘制
img_copy = img.copy()
# 转灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 二值化
ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

# ---------------------- 查找轮廓 ----------------------
# cv2.findContours(二值图, 检索模式, 逼近方法)
contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

# ---------------------- 绘制轮廓 ----------------------
# cv2.drawContours(图像, 轮廓列表, 索引(-1表示所有), 颜色, 粗细)
cv2.drawContours(img_copy, contours, -1, (0, 255, 0), 2)

# 打印轮廓数量
print(f"检测到{len(contours)}个轮廓")

# 显示结果
cv2.imshow("Contours", img_copy)
cv2.waitKey(0)
cv2.destroyAllWindows()

6.2 形状匹配与识别

python

运行

python 复制代码
import cv2
import numpy as np

def shape_detection(img):
    # 灰度转换
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # 阈值处理
    _, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
    # 查找轮廓
    contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    
    for cnt in contours:
        # 计算轮廓面积
        area = cv2.contourArea(cnt)
        if area < 100:  # 过滤小轮廓
            continue
        
        # 轮廓逼近
        peri = cv2.arcLength(cnt, True)
        approx = cv2.approxPolyDP(cnt, 0.04 * peri, True)
        # 获取角点数
        corners = len(approx)
        
        # 获取外接矩形
        x, y, w, h = cv2.boundingRect(approx)
        
        # 判断形状
        if corners == 3:
            shape = "Triangle"
        elif corners == 4:
            # 判断正方形/长方形
            aspect_ratio = w / float(h)
            shape = "Square" if 0.95 <= aspect_ratio <= 1.05 else "Rectangle"
        elif corners == 5:
            shape = "Pentagon"
        else:
            shape = "Circle"
        
        # 绘制形状与文字
        cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
        cv2.putText(img, shape, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
    
    return img

# 读取图像
img = cv2.imread("shapes.jpg")
# 形状识别
result = shape_detection(img)
# 显示结果
cv2.imshow("Shape Detection", result)
cv2.waitKey(0)
cv2.destroyAllWindows()

七、视频处理与实时分析

7.1 摄像头实时读取

python

运行

python 复制代码
import cv2
import numpy as np

# 打开摄像头(0表示默认摄像头)
cap = cv2.VideoCapture(0)

# 判断摄像头是否打开成功
if not cap.isOpened():
    print("摄像头打开失败!")
    exit()

while True:
    # 读取帧
    ret, frame = cap.read()
    if not ret:
        print("读取帧失败!")
        break
    
    # 实时处理:翻转图像
    frame = cv2.flip(frame, 1)  # 1水平翻转,0垂直翻转,-1水平+垂直翻转
    
    # 显示帧
    cv2.imshow("Camera", frame)
    
    # 按q退出
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 释放资源
cap.release()
cv2.destroyAllWindows()

7.2 视频保存

python

运行

python 复制代码
import cv2
import numpy as np

# 打开摄像头
cap = cv2.VideoCapture(0)

# 定义编码器
fourcc = cv2.VideoWriter_fourcc(*'XVID')
# 创建VideoWriter对象(文件名,编码器,帧率,分辨率)
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480))

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break
    
    # 写入帧
    out.write(frame)
    
    # 显示
    cv2.imshow('frame', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 释放资源
cap.release()
out.release()
cv2.destroyAllWindows()

八、实战项目:AI 视觉人脸检测

8.1 静态图片人脸检测

python

运行

python 复制代码
import cv2
import numpy as np

# 加载人脸检测器(OpenCV自带Haar级联分类器)
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')

# 读取图像
img = cv2.imread("face.jpg")
# 转灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 检测人脸
# detectMultiScale(灰度图, 缩放系数, 最小邻居数)
faces = face_cascade.detectMultiScale(gray, 1.1, 4)

# 绘制人脸框
for (x, y, w, h) in faces:
    cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
    cv2.putText(img, "Face", (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2)

# 打印检测结果
print(f"检测到{len(faces)}张人脸")

# 显示结果
cv2.imshow("Face Detection", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

8.2 实时摄像头人脸检测

python

运行

python 复制代码
import cv2
import numpy as np

# 加载人脸检测器
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
# 打开摄像头
cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read()
    if not ret:
        break
    
    # 转灰度图
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    # 检测人脸
    faces = face_cascade.detectMultiScale(gray, 1.1, 4)
    
    # 绘制人脸框
    for (x, y, w, h) in faces:
        cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0, 0), 2)
        cv2.putText(frame, f"Face {len(faces)}", (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2)
    
    # 显示
    cv2.imshow("Real-time Face Detection", frame)
    
    # 退出
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 释放资源
cap.release()
cv2.destroyAllWindows()

九、实战项目:AI 视觉颜色识别

python

运行

python 复制代码
import cv2
import numpy as np

def color_detection(frame):
    # 转HSV空间
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
    
    # 定义颜色范围(HSV)
    # 红色
    lower_red = np.array([0, 120, 70])
    upper_red = np.array([10, 255, 255])
    # 绿色
    lower_green = np.array([40, 40, 40])
    upper_green = np.array([70, 255, 255])
    # 蓝色
    lower_blue = np.array([90, 40, 40])
    upper_blue = np.array([130, 255, 255])
    
    # 生成掩码
    mask_red = cv2.inRange(hsv, lower_red, upper_red)
    mask_green = cv2.inRange(hsv, lower_green, upper_green)
    mask_blue = cv2.inRange(hsv, lower_blue, upper_blue)
    
    # 形态学操作去噪
    kernel = np.ones((5, 5), np.uint8)
    mask_red = cv2.morphologyEx(mask_red, cv2.MORPH_OPEN, kernel)
    mask_green = cv2.morphologyEx(mask_green, cv2.MORPH_OPEN, kernel)
    mask_blue = cv2.morphologyEx(mask_blue, cv2.MORPH_OPEN, kernel)
    
    # 查找轮廓
    contours_red, _ = cv2.findContours(mask_red, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    contours_green, _ = cv2.findContours(mask_green, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    contours_blue, _ = cv2.findContours(mask_blue, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    
    # 绘制红色
    for cnt in contours_red:
        if cv2.contourArea(cnt) > 100:
            x, y, w, h = cv2.boundingRect(cnt)
            cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 0, 255), 2)
            cv2.putText(frame, "Red", (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)
    
    # 绘制绿色
    for cnt in contours_green:
        if cv2.contourArea(cnt) > 100:
            x, y, w, h = cv2.boundingRect(cnt)
            cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
            cv2.putText(frame, "Green", (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
    
    # 绘制蓝色
    for cnt in contours_blue:
        if cv2.contourArea(cnt) > 100:
            x, y, w, h = cv2.boundingRect(cnt)
            cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0, 0), 2)
            cv2.putText(frame, "Blue", (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2)
    
    return frame

# 打开摄像头
cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read()
    if not ret:
        break
    
    # 颜色识别
    result = color_detection(frame)
    # 显示
    cv2.imshow("Color Detection", result)
    
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

十、常见问题解答

10.1 技术问题

Q1:图像读取失败怎么办?

  • 检查文件路径是否正确,建议使用绝对路径
  • 确认文件格式为 jpg、png、bmp 等 OpenCV 支持的格式
  • 检查文件是否损坏

Q2:摄像头无法打开?

  • 确认摄像头权限已开启
  • 更换摄像头索引(0、1、2)
  • 关闭其他占用摄像头的程序

Q3:检测效果差?

  • 调整阈值、卷积核大小、缩放系数等参数
  • 增加滤波去噪步骤
  • 优化光照环境,避免阴影、反光

10.2 优化技巧

  • 图像预处理:先滤波、再阈值、最后检测,提升准确率
  • 轮廓过滤:通过面积、长宽比过滤无效轮廓
  • 实时优化:降低图像分辨率,提升处理速度
  • 多线程:将图像读取与处理分离,避免卡顿

十一、未来发展趋势

11.1 技术趋势

  1. 端侧 AI 视觉:手机、嵌入式设备本地运行视觉模型
  2. 多模态融合:视觉 + 语音 + 文本,实现更智能的交互
  3. 大模型视觉:基于 Transformer 的视觉大模型,通用识别能力
  4. 3D 视觉:深度感知、三维重建、虚拟与现实融合

11.2 应用趋势

  • 工业:AI 质检、缺陷检测、无人生产线
  • 安防:人脸识别、行为分析、异常检测
  • 医疗:病灶识别、影像分析、辅助诊断
  • 生活:AR 特效、智能美颜、物品识别

11.3 职业发展

  • 入门期:Python+OpenCV 基础,1-2 个月
  • 进阶期:深度学习视觉(YOLO、CNN),2-4 个月
  • 专业期:模型部署、嵌入式视觉,4-8 个月
  • 专家期:视觉算法研发、项目架构,1 年以上

十二、本章小结

12.1 核心要点回顾

  1. 掌握 OpenCV 环境搭建与基础操作,可独立读写图像、视频
  2. 精通图像处理:滤波、阈值、边缘检测、形态学操作
  3. 学会特征检测:轮廓、形状、颜色、人脸实时识别
  4. 完成两大实战项目:人脸检测、颜色识别,可直接落地应用

12.2 学习建议

  1. 多敲代码:视觉开发是实践型技术,动手比看书更重要
  2. 循序渐进:从基础操作到实战项目,逐步深入
  3. 项目驱动:用小项目巩固知识,如车牌识别、手势控制
  4. 持续学习:关注 YOLO、CNN 等深度学习视觉技术

从零入门 Python+OpenCV 计算机视觉,这套教程从基础到实战全覆盖,代码可直接复制运行,小白也能快速上手 AI 视觉开发!关注我,后续更新YOLO 目标检测、CNN 图像分类、嵌入式视觉部署等硬核教程,带你从零基础变身 AI 视觉工程师,解锁高薪技术赛道!

相关推荐
qq_413847401 小时前
如何脱机维护表空间数据文件_OFFLINE与ONLINE状态的切换场景
jvm·数据库·python
算力百科小智1 小时前
6款3D漫剧工具深度体验,核心功能对比刨析
人工智能·ai作画·aigc
qq_411262421 小时前
四博 AI 双目方案技术拆解:用 ESP32-S3 做一个有眼神、有触感、有姿态感知的 AI 交互终端
人工智能·交互
不要绝望总会慢慢变强1 小时前
无人机智能体的实现的一些思考
人工智能·深度学习·ai·无人机
四维迁跃1 小时前
Python Selenium怎么定位元素_By.XPATH与By.CSS_SELECTOR操作DOM节点
jvm·数据库·python
啦啦啦_99991 小时前
2. 梯度下降算法分类 & 梯度下降与正规方程对比
人工智能·算法·分类
千里念行客2401 小时前
扬电科技落子“草原云谷”:一场算电协同的西部突围
大数据·人工智能·科技·安全
wwwasw1 小时前
基于YOLO26目标检测在商品包装照片上的条码识别实践
人工智能·yolo·目标检测·计算机视觉
jinanwuhuaguo1 小时前
暗黑演化——记忆投毒、认知篡改与“数字精神分裂症”的安全悖论(第十四篇)
前端·人工智能·安全·重构·openclaw