31 分钟阅读
关于这份手册 这份手册覆盖了 20 款主流嵌入式摄像头模组——OV/GC 系列 8 款(OV2640 / OV5640 / OV7725 / GC0309 / OV7670 / OV3660 / GC2053 / GC4653)和 Sony IMX 系列 12 款(IMX219 / IMX273 / IMX296 / IMX307 / IMX335 / IMX415 / IMX477 / IMX678 / IMX708 / IMX766,以及 OV9281 和 OV5647)。所有参数均来自官方数据表(datasheet),数据来源已在每节末尾标注。
继续阅读 →
9 分钟阅读
为什么选择 Go 和 Rust? 在实际图像处理项目中,选择合适的编程语言至关重要。Go 和 Rust 作为现代系统级语言,各自具有独特优势,适合实现高性能的图像恢复算法。
继续阅读 →
10 分钟阅读
本文基于 Zig 0.16。
经过前五篇的旅程——语法、错误处理、内存管理、编译期计算、构建系统——现在到了收官篇,该把知识串起来了。
0.16 是两个重要版本的交汇点:标准库容器完成了 Unmanaged 迁移,同时引入了革命性的 std.Io 接口。这两个变化深刻影响了 Zig 代码的写法。本篇将围绕它们展开,最后用三语言实战对比收束,并给出学习路线和资源。
继续阅读 →
9 分钟阅读
前面几篇讲 OOM 追踪时,所有 eBPF 内核态程序都是用 C 写的。这很自然——C 是 eBPF 的"母语",verifier、CO-RE、libbpf 整个工具链都是围绕 C 设计的。但如果你关注过 eBPF 生态,会发现一个明显的趋势:越来越多的人开始用 C 以外的语言写 eBPF。Rust 的 Aya 框架已经被 Solana 验证器、Kubernetes Gateway API 用在生产环境;而 Zig 也在尝试用 comptime、显式分配和一流的 C 互操作带来新的开发体验。
继续阅读 →
7 分钟阅读
本文基于 Zig 0.16。
前几篇我们完成了基础语法、错误处理和内存分配器,现在终于可以触及 Zig 最迷人、也最具革命性的特性——编译期计算(comptime)。但在此之前,我们先花几分钟快速了解 Zig 的结构体与方法,它们是你理解 comptime 的基石。
继续阅读 →
6 分钟阅读
本文基于 Zig 0.16。
前几篇我们走过了 Zig 的基础语法和错误处理。现在进入 Zig 最与众不同的部分——内存管理。
如果你有 Go 或 Rust 背景,Zig 的内存哲学会让你感到陌生:它既不提供垃圾回收,也不引入所有权系统,而是选择了一条完全不同的路——分配器模式(Allocator Pattern)。这个模式的核心约定极其简单,但影响深远:
继续阅读 →
8 分钟阅读
从 SRGAN 到 ESRGAN(2018) SRGAN(Super-Resolution GAN)在 2016 年首次将生成对抗网络(GAN)引入超分辨率领域,通过感知损失(perceptual loss)生成的图像在视觉质量上显著超越了传统的 PSNR 优化方法。但 SRGAN 仍有改进空间——2018 年 Wang 等人提出的 ESRGAN(Enhanced Super-Resolution GAN)在四个关键方向上进行了优化。
继续阅读 →
6 分钟阅读
本文基于 Zig 0.16。
三种错误处理范式 错误处理是编程语言设计中最具争议的话题之一。Go 的多返回值、Rust 的 Result<T, E> 枚举、Zig 的错误联合类型——它们代表了三种截然不同的哲学。本文假设你已有 Go 或 Rust 经验,将以此为参照系来理解 Zig 的设计。
继续阅读 →
7 分钟阅读
本文基于 Zig 0.16。
上一篇我们聊了为什么 Zig 值得学,以及怎么跑通你的第一个 Hello World。这一篇直接上手语法——变量、类型、控制流、函数、泛型。核心目标只有一个:让你能读懂和写出 Zig 代码。
继续阅读 →
7 分钟阅读
本文基于 Zig 0.16(2026-04-13 发布,当前最新稳定版)。Zig 是一门仍在快速演进的现代系统编程语言,它的源码仓库已从 GitHub 迁移到 Codeberg,官方下载页在 ziglang.org/download/。
为什么是 Zig? 如果你已经熟悉 Go 和 Rust,可能会问:为什么还要看第三门系统语言?答案很简单:Zig 填补了 Go 和 Rust 之间的空白。
继续阅读 →