上手

卷积神经网络

首先 这是一个canny边缘检测 能非常明晰地获取你的边缘

重要的点是 下面有一个拉框 你能通过调整其值 来了解到那些地方会很明显

import cv2

# 定义滑动条的回调函数(必须要有,但不做实际操作)
def nothing(x):
    pass

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

# 创建一个窗口用于显示
cv2.namedWindow('Canny Edges')

# 创建两个滑动条用来调节 Canny 边缘检测的两个阈值
cv2.createTrackbar('Min Threshold', 'Canny Edges', 0, 255, nothing)  # 最小阈值范围 0-255
cv2.createTrackbar('Max Threshold', 'Canny Edges', 0, 255, nothing)  # 最大阈值范围 0-255

# 设置滑动条初始值
cv2.setTrackbarPos('Min Threshold', 'Canny Edges', 100)
cv2.setTrackbarPos('Max Threshold', 'Canny Edges', 200)

while True:
    # 读取摄像头帧
    ret, frame = cap.read()
    if not ret:
        print("无法读取摄像头帧")
        break

    # 转换为灰度图
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # 从滑动条中获取当前的阈值
    min_val = cv2.getTrackbarPos('Min Threshold', 'Canny Edges')
    max_val = cv2.getTrackbarPos('Max Threshold', 'Canny Edges')

    # 应用 Canny 边缘检测
    edges = cv2.Canny(gray, min_val, max_val)

    # 显示原始视频帧和边缘检测结果
    cv2.imshow('Original Frame', frame)
    cv2.imshow('Canny Edges', edges)

    # 按下 'q' 键退出
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 释放摄像头资源并关闭所有窗口
cap.release()
cv2.destroyAllWindows()

但是 为什么要会这个呢


原因是...

在1980年代,神经科学家David H. Hubel和Torsten Wiesel研究了猫和猴子的视觉皮层(V1区)对视觉信号的反应。他们发现,视觉皮层中的神经元会响应图像中的某些特定的模式,比如边缘、方向和运动等。

Yann LeCun在1990年代提出了基于分层结构的卷积神经网络,用于图像识别任务。最早的CNN模型(如LeNet-5)就成功应用于手写数字识别(如MNIST数据集)。

那么就尝试一下最简单的卷积神经网络

Last updated