你的第一个真实项目 – 实时边缘检测与录制

发布: (2026年1月1日 GMT+8 01:00)
4 分钟阅读
原文: Dev.to

Source: Dev.to

Cover image for Your First Real Project – Live Edge Detection with Recording

为什么这很重要

边缘检测是严肃计算机视觉的 “hello world”——在这里你开始调参、追求干净的线条,并意识到原始 OpenCV 设置会浪费多少时间。

使用原生 GoCV,你需要写几十行代码来完成:

  • 相机捕获循环
  • 窗口创建
  • Mat 管理(以及不可避免的泄漏)
  • 键盘处理
  • 录制逻辑

GoCVKit 为你免费提供这些功能。你只需专注于管道本身。

实战:构建边缘检测器

项目设置

# 如果还没有创建
mkdir gocvkit-edge && cd gocvkit-edge
go mod init edge-demo
go get github.com/Elliot727/gocvkit

main.go

package main

import (
    "log"
    "github.com/Elliot727/gocvkit"
)

func main() {
    app, err := gocvkit.NewApp("config.toml")
    if err != nil {
        log.Fatal(err)
    }
    defer app.Close()
    app.Run(nil)
}

config.toml

[app]
window_name = "GoCVKit – Live Edge Detection"
record = true                  # 自动保存处理后的视频
output = "edge_detection.mp4"  # 可选:自定义文件名

[camera]
device_id = 0
# file = "demo.mp4"            # 取消注释以使用视频文件

[stream]
enabled = false                # 暂时关闭——以后可以打开

[[pipeline.steps]]
name = "Grayscale"

[[pipeline.steps]]
name = "GaussianBlur"
kernel = 9
sigma = 1.8

[[pipeline.steps]]
name = "Canny"
low = 50
high = 150

运行应用

go run .

你应该会看到一个实时边缘检测窗口,具备:

  • 干净的 Canny 边缘
  • f 切换 FPS 叠加
  • 自动开始录制(edge_detection.mp4
  • config.toml 中编辑任意值 → 保存 → 即时更新(感谢第 2 周!)

提升层次

增大模糊以获得更平滑的边缘

kernel = 15
sigma = 3

更柔和的边缘

low = 30
high = 100

添加形态学操作以清理噪声

[[pipeline.steps]]
name = "Dilate"
kernel = 3
iterations = 1

实时切换录制

config.toml 中将 record = false 改为 true 并保存。

进阶:使用帧回调添加简单叠加

app.Run(func(frame *gocv.Mat) {
    // 在最终处理后的帧上运行
    gocv.PutText(frame, "Low: 50  High: 150", image.Pt(10, 30),
        gocv.FontHersheyPlain, 1.5, gocv.NewScalar(255, 255, 255, 0), 2)
})

(重新编译一次——但现在你可以通过修改字符串或以后改为配置驱动来热更新文字。)

专业技巧

  • 录制会在文件过大时自动旋转——无需手动管理。
  • Escq 可优雅退出(资源会被清理)。
  • 摄像头用完了?取消注释 file = "demo.mp4" 并改用视频文件。

亲自尝试

复制上面的 config.toml,运行程序,开始玩耍。故意弄坏它,现场修复。感受速度。

你最喜欢的边缘检测调参是什么?粗犷/细线还是柔和轮廓?在评论里告诉大家吧!

Back to Blog

相关文章

阅读更多 »

RGB LED 支线任务 💡

markdown !Jennifer Davishttps://media2.dev.to/dynamic/image/width=50,height=50,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%...

Mendex:我为何构建

介绍 大家好。今天我想分享一下我是谁、我在构建什么以及为什么。 早期职业生涯与倦怠 我在 17 年前开始我的 developer 生涯……