<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>工业视觉 on FXIO 技术博客</title><link>https://fxio.site/tags/%E5%B7%A5%E4%B8%9A%E8%A7%86%E8%A7%89/</link><description>Recent content in 工业视觉 on FXIO 技术博客</description><generator>Hugo -- 0.157.0</generator><language>zh-cn</language><lastBuildDate>Sat, 11 Jul 2026 18:00:00 +0800</lastBuildDate><atom:link href="https://fxio.site/tags/%E5%B7%A5%E4%B8%9A%E8%A7%86%E8%A7%89/index.xml" rel="self" type="application/rss+xml"/><item><title>深度学习实战——从标注到部署的完整闭环</title><link>https://fxio.site/posts/cv/deep-learning-yolo-training-deploy/</link><pubDate>Sat, 11 Jul 2026 18:00:00 +0800</pubDate><guid>https://fxio.site/posts/cv/deep-learning-yolo-training-deploy/</guid><description>&lt;blockquote&gt;
&lt;p&gt;核心问题：怎么让一个“不会看”的模型，学会识别工业零件表面的划痕？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;!-- more --&gt;
&lt;h2 id="质检员的-05-秒困境"&gt;质检员的 0.5 秒困境&lt;/h2&gt;
&lt;p&gt;想象你是一个质检员，面前是传送带上飞速流动的钢板。每秒几十张，你要在 0.5 秒内判断：这张有没有划痕？有没有夹杂物？有没有裂纹？&lt;/p&gt;
&lt;p&gt;人眼做不到。但神经网络可以。&lt;/p&gt;
&lt;p&gt;目标——用深度学习，把这双&amp;quot;眼睛&amp;quot;训练出来。从 CNN 的底层原理开始，经过 YOLO 目标检测实战、LabelMe 数据标注，到用 trace-cn 辅助写训练代码，最终走完**&amp;ldquo;标注→训练→推理&amp;rdquo;**的完整闭环。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="cnn-基础卷积神经网络到底在看什么"&gt;CNN 基础：卷积神经网络到底在&amp;quot;看&amp;quot;什么？&lt;/h2&gt;
&lt;h3 id="从生物视觉到数学公式"&gt;从生物视觉到数学公式&lt;/h3&gt;
&lt;p&gt;CNN 的设计灵感来自人类视觉皮层。你看到一张照片，不是逐个像素分析的——你先看到边缘，再看到形状，最后组合出&amp;quot;这是一张脸&amp;quot;。CNN 干的是同样的事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;浅层卷积核&lt;/strong&gt;提取边缘、纹理（&amp;ldquo;这里有条线&amp;rdquo;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;中层&lt;/strong&gt;把边缘组合成形状（&amp;ldquo;这是个圆形&amp;rdquo;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;深层&lt;/strong&gt;把形状组合成语义（&amp;ldquo;这是个齿轮&amp;rdquo;）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;核心操作是&lt;strong&gt;卷积&lt;/strong&gt;：一个小的权重矩阵（比如 3×3）在图像上滑动，每个位置做加权求和。一个 3×3 的卷积核只有 9 个参数，却能扫描整个图像——这就是&lt;strong&gt;参数共享&lt;/strong&gt;的威力。全连接网络处理一张 224×224 的图片需要上亿参数，CNN 可能只需要几万。&lt;/p&gt;
&lt;h3 id="为什么卷积核能提取特征"&gt;为什么卷积核能提取特征？&lt;/h3&gt;
&lt;p&gt;假设你有一个检测水平边缘的卷积核：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;[[-1, -1, -1],
[ 0, 0, 0],
[ 1, 1, 1]]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;当它滑过图像时，遇到&amp;quot;上暗下亮&amp;quot;的区域，输出值就很大；遇到均匀区域，输出接近零。所以卷积核本质上就是一个&lt;strong&gt;模式匹配器&lt;/strong&gt;——每个核负责匹配一种特定的视觉模式。&lt;/p&gt;
&lt;h3 id="池化层压缩但不丢失"&gt;池化层：压缩但不丢失&lt;/h3&gt;
&lt;p&gt;卷积之后通常接一个池化层（最常见的是 2×2 最大池化）。它做的事情很简单：把 2×2 区域里的最大值保留下来，其余扔掉。&lt;/p&gt;
&lt;p&gt;为什么这么&amp;quot;浪费&amp;quot;？因为池化做了两件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;降低计算量&lt;/strong&gt;：特征图尺寸减半，参数量降到 25%&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;增加鲁棒性&lt;/strong&gt;：目标稍微平移一点，最大池化的输出不变&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这就像你看一个人，不需要记住他脸上每个像素的位置，只需要知道&amp;quot;眼睛在鼻子上面&amp;quot;这种相对关系。&lt;/p&gt;
&lt;h3 id="训练的三驾马车损失函数学习率早停"&gt;训练的三驾马车：损失函数、学习率、早停&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;损失函数&lt;/strong&gt;衡量模型预测和真实值的差距。不同任务用不同的损失：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;分类用&lt;strong&gt;交叉熵&lt;/strong&gt;（&amp;ldquo;你预测是猫，但其实是狗，惩罚！&amp;quot;）&lt;/li&gt;
&lt;li&gt;目标检测用 &lt;strong&gt;CIoU Loss&lt;/strong&gt;（同时考虑框的重叠面积、中心距离、宽高比）&lt;/li&gt;
&lt;li&gt;分割用 &lt;strong&gt;Dice Loss&lt;/strong&gt;（对小目标特别敏感，比如医学影像里的肿瘤）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;学习率&lt;/strong&gt;控制每次更新参数的步长。太大了来回震荡，太小了原地踏步。实际训练中常用&lt;strong&gt;自适应学习率&lt;/strong&gt;（如 Adam），它会根据梯度自动调整步长——梯度大就小步走，梯度小就大步跑。&lt;/p&gt;</description></item><item><title>用 YOLO 数筷子——从 OpenCV 到深度学习的目标检测实战</title><link>https://fxio.site/posts/cv/yolo-chopsticks-counting/</link><pubDate>Sun, 28 Jun 2026 20:00:00 +0800</pubDate><guid>https://fxio.site/posts/cv/yolo-chopsticks-counting/</guid><description>&lt;blockquote&gt;
&lt;p&gt;不锈钢筷子头挨着头、反光闪瞎眼，OpenCV 霍夫圆直接投降。这个小项目走了一遍从传统 CV 到深度学习的完整路径。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;!-- more --&gt;
&lt;h2 id="那些反光的筷子头把-opencv-逼疯了"&gt;那些反光的筷子头，把 OpenCV 逼疯了&lt;/h2&gt;
&lt;p&gt;事情是这样的：要数一把不锈钢筷子有多少根。听起来很简单对吧？拿个相机拍一下，数圆圈就行了。&lt;/p&gt;
&lt;p&gt;用 OpenCV 的霍夫圆变换（HoughCircles）试了一下——惨不忍睹。不锈钢顶部的金属反光和阴影被边缘检测器当成独立实体，满屏幕乱飞的假阳性圆圈。筷子头挨得又近，阴影轮廓互相粘连，算法根本分不清这是 16 根筷子还是 2 个异形物体。&lt;/p&gt;
&lt;p&gt;更要命的是调参。换个光照条件，&lt;code&gt;param1&lt;/code&gt;、&lt;code&gt;param2&lt;/code&gt; 又得重来。换个桌面背景，再来一遍。这不是写代码，这是在做手工。&lt;/p&gt;
&lt;p&gt;这就是传统 CV 的死穴：&lt;strong&gt;它只认几何形状，不认&amp;quot;东西&amp;quot;&lt;/strong&gt;。霍夫圆变换的逻辑是&amp;quot;找到符合圆方程的像素点集合&amp;quot;，它不理解&amp;quot;这是一根筷子的截面&amp;quot;这个概念。光照一变、角度一变、排列一变，像素梯度就变了，算法就废了。&lt;/p&gt;
&lt;h2 id="为什么-yolo-能搞定"&gt;为什么 YOLO 能搞定&lt;/h2&gt;
&lt;p&gt;YOLO 的思路完全不同。它不是在像素层面找几何形状，而是&lt;strong&gt;从数百万张图片里学会了&amp;quot;什么是筷子头&amp;quot;&lt;/strong&gt;。它理解的是语义特征，不是像素梯度。&lt;/p&gt;
&lt;p&gt;具体到这个场景：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;问题&lt;/th&gt;
&lt;th&gt;OpenCV (霍夫圆)&lt;/th&gt;
&lt;th&gt;YOLO&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;不锈钢高光&lt;/td&gt;
&lt;td&gt;把光斑误判为实体&lt;/td&gt;
&lt;td&gt;能通过上下文推理出这是光斑&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;筷子头紧密排列&lt;/td&gt;
&lt;td&gt;把多个物体融合成一个&lt;/td&gt;
&lt;td&gt;擅长分辨紧密排列的多个实例&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;换光照/换背景&lt;/td&gt;
&lt;td&gt;每次都要重调参&lt;/td&gt;
&lt;td&gt;一次训练，到处通用&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;简单说：&lt;strong&gt;OpenCV 是&amp;quot;按规则找&amp;quot;，YOLO 是&amp;quot;凭经验认&amp;quot;&lt;/strong&gt;。规则怕变化，经验怕没见过——但筷子头这种常见物体，YOLO 的训练集里见得多了。&lt;/p&gt;
&lt;h2 id="从标注到训练三步走"&gt;从标注到训练：三步走&lt;/h2&gt;
&lt;h3 id="第一步安装标注工具"&gt;第一步：安装标注工具&lt;/h3&gt;
&lt;p&gt;先检查 Python 版本：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python --version
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Python ≥ 3.9&lt;/strong&gt; → 用 &lt;a href="https://github.com/labelmeai/labelme"&gt;LabelMe&lt;/a&gt;，支持圆形/多边形标注，本项目用的就是它&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Python ≤ 3.8&lt;/strong&gt; → 建议用 &lt;a href="https://github.com/heartexlabs/labelImg"&gt;LabelImg&lt;/a&gt;，只支持矩形框，但兼容性更好&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;💡 LabelMe 依赖的 &lt;code&gt;pyqt5&lt;/code&gt; 在 Python 3.8 以下版本经常装不上，折腾半小时不如直接换工具。&lt;/p&gt;</description></item><item><title>从数据到系统——当工业视觉遇上 AI 工程化</title><link>https://fxio.site/posts/cv/industrial-vision-ai-engineering/</link><pubDate>Sun, 28 Jun 2026 18:00:00 +0800</pubDate><guid>https://fxio.site/posts/cv/industrial-vision-ai-engineering/</guid><description>&lt;blockquote&gt;
&lt;p&gt;核心问题：光有技术不够，怎么把它变成一个能落地的系统？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;!-- more --&gt;
&lt;h2 id="那个模型做出来了但用不了的尴尬时刻"&gt;那个&amp;quot;模型做出来了但用不了&amp;quot;的尴尬时刻&lt;/h2&gt;
&lt;p&gt;你有没有遇到过这种情况：团队花了一个月训练出一个效果不错的模型，兴冲冲拿给客户看，客户问&amp;quot;那我怎么用？&amp;quot;，然后就尴尬了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;工程化&lt;/strong&gt;——从“我懂原理”到“我能交付”的转变。下面从预测性维护的数据分析开始，一路走到成像系统的智能选型，最后把行业知识封装成可复用的工具。整个过程，与其说是在学技术，不如说是在学&lt;strong&gt;怎么把技术变成产品&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="预测性维护用数据讲故事"&gt;预测性维护：用数据讲故事&lt;/h2&gt;
&lt;p&gt;上午的切入点是 AI4I 2020 预测性维护数据集。这个数据集模拟了工业设备的运行参数：空气温度、工艺温度、转速、扭矩、刀具磨损量，共 10,000 条记录，其中只有 3.39% 是故障样本。&lt;/p&gt;
&lt;h3 id="先别急着建模"&gt;先别急着建模&lt;/h3&gt;
&lt;p&gt;很多工程师拿到数据第一反应是&amp;quot;赶紧上模型&amp;quot;。但课程的做法是：&lt;strong&gt;先做 EDA（探索性数据分析）&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;为什么？因为如果你不理解数据，模型给你的结果你也看不懂。就好比你不懂电路图就去修电器，运气好能修好，运气差就炸了。&lt;/p&gt;
&lt;p&gt;具体做了什么？几个关键发现：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;扭矩和转速的散点图&lt;/strong&gt;一画出来，故障样本和正常样本的分布区域一目了然。OSF（过冲故障）集中在高扭矩（&amp;gt;50 Nm）+ 高刀具磨损（&amp;gt;180 min）区域&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;故障率按产品类型递减&lt;/strong&gt;：L(3.92%) &amp;gt; M(2.77%) &amp;gt; H(2.09%)，这个规律可以直接指导备件策略和质保定价&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RNF（随机故障）只有 19 条&lt;/strong&gt;，这种极端不均衡的数据，直接丢进模型训练大概率会出问题&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="从分析报告到交互看板"&gt;从分析报告到交互看板&lt;/h3&gt;
&lt;p&gt;最终产出的不只是一个分析报告，而是一个&lt;strong&gt;交互式的数据看板&lt;/strong&gt;（HTML）。可以点选、筛选、动态展示。&lt;/p&gt;
&lt;p&gt;这个思路在工业场景里特别实用。你给产线管理者一份 PDF 报告，他可能看都不看；但你给他一个能点来点去的看板，他至少会好奇地点两下。这两下，可能就是他理解数据的开始。&lt;/p&gt;
&lt;p&gt;课程还给出了一个很实用的&lt;strong&gt;规则引擎&lt;/strong&gt;建议：不用部署 ML 模型，直接把阈值规则嵌入 SCADA 系统，就能覆盖约 70% 的故障预警场景。有时候，够用就好。&lt;/p&gt;
&lt;h2 id="从提示词到智能体把经验变成工具"&gt;从提示词到智能体：把经验变成工具&lt;/h2&gt;
&lt;p&gt;下午画风一转，开始讲&lt;strong&gt;怎么把行业知识封装成 AI 智能体&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="成像系统选型专家"&gt;成像系统选型专家&lt;/h3&gt;
&lt;p&gt;核心案例是&amp;quot;成像系统选型专家&amp;quot;。传统做法是找一个有十年经验的工程师，你告诉他&amp;quot;我要检测手机壳表面划痕&amp;quot;，他会问你一堆问题（精度多少？节拍多快？材质是什么？），然后给出一套方案。&lt;/p&gt;
&lt;p&gt;现在要做的事情是：&lt;strong&gt;把这个工程师的经验变成一个可复用的智能体&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;课程展示了一段很长的 System Prompt，里面系统性地整理了成像系统的选型规则：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;相机怎么选&lt;/strong&gt;：视场 = 产品尺寸 + 各种余量，像素精度要做到公差的 1/5 到 1/10&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;镜头怎么算&lt;/strong&gt;：焦距 f = 工作距离 × 芯片尺寸 / 视场，远心镜头适合高精度测量&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;光源怎么选&lt;/strong&gt;：轮廓检测用背光，表面划伤用暗场光，反光件用穹顶光&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;成像方式判断&lt;/strong&gt;：2D 面阵、线扫、3D 结构光、智能相机……每种都有适用场景&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这不是简单的&amp;quot;让 AI 回答问题&amp;quot;，而是&lt;strong&gt;把领域专家的决策逻辑结构化地注入到 AI 中&lt;/strong&gt;。好比你把一个老师傅的经验写成了标准作业指导书，但这个指导书还能根据具体情况灵活调整。&lt;/p&gt;</description></item><item><title>机器视觉入门——光、镜头、相机，以及为什么选错一个全白搭</title><link>https://fxio.site/posts/cv/machine-vision-basics/</link><pubDate>Sat, 27 Jun 2026 18:00:00 +0800</pubDate><guid>https://fxio.site/posts/cv/machine-vision-basics/</guid><description>&lt;blockquote&gt;
&lt;p&gt;工业产线上，机器怎么&amp;quot;看&amp;quot;东西？答案不在算法里，在硬件选型的每一个细节里。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;!-- more --&gt;
&lt;h2 id="开场一个真实的翻车现场"&gt;开场：一个真实的翻车现场&lt;/h2&gt;
&lt;p&gt;去年帮一个朋友调一条五金件检测线。缺陷检测算法在实验室跑得好好的，一上产线就各种误报。排查了半天，最后发现原因特别朴素——&lt;strong&gt;光源选小了&lt;/strong&gt;。光源有效发光面积没覆盖住整个视野，画面中间亮、两边暗，边缘的工件特征被算法当成了缺陷。&lt;/p&gt;
&lt;p&gt;一个两千块的光源问题，浪费了三天调算法。&lt;/p&gt;
&lt;p&gt;这就是机器视觉的第一课：&lt;strong&gt;它是一个链式系统，光→镜头→相机→算法，环环相扣。任何一个环节的短板都会被后续环节放大。&lt;/strong&gt; 算法再牛，喂给它的图像质量不行，结果就是垃圾进、垃圾出。&lt;/p&gt;
&lt;p&gt;下面记录这条链路的学习要点。&lt;/p&gt;
&lt;h2 id="硬件三件套光源镜头相机"&gt;硬件三件套：光源、镜头、相机&lt;/h2&gt;
&lt;h3 id="光源最容易被低估的环节"&gt;光源：最容易被低估的环节&lt;/h3&gt;
&lt;p&gt;很多工程师（包括以前的我）觉得光源就是&amp;quot;把东西照亮&amp;quot;。错。光源的核心目标是&lt;strong&gt;让目标特征和背景之间的对比度最大化&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;打个比方：你要在白纸上检测白色划痕，用白光正面打，什么都看不到。但换成低角度的条形光源，光线擦过表面，划痕边缘产生反射，背景是暗的，划痕是亮的——缺陷就&amp;quot;跳&amp;quot;出来了。&lt;/p&gt;
&lt;p&gt;课程里讲了五六种常见光源，我按使用频率排个序：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;环形光源&lt;/strong&gt;：最通用，360° 均匀照明，适合大多数表面检测。如果不知道用什么，先试环形光。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;条形光源&lt;/strong&gt;：方向性强，擅长消除镜面反光。检测金属平面字符时，条形光比环形光好用得多——环形光容易在光滑表面打出大面积光晕。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;背光源&lt;/strong&gt;：从底部打光，物体轮廓变成剪影。做尺寸测量、孔径检测时的标配。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;同轴光源&lt;/strong&gt;：内置分光镜，光线垂直照射。专门对付高反光的镜面、抛光金属，能消除凹凸产生的阴影。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;穹顶光源&lt;/strong&gt;：半球形漫射，360° 无死角。检测曲面工件（比如球形外壳）时的首选，普通光源打上去全是反光斑点。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;还有一个容易忽略的点：&lt;strong&gt;光源颜色选择遵循互补色原理&lt;/strong&gt;。红光照绿色物体，黑白相机下物体是黑色的；红光照红色物体，物体是白色的。想让红色字符在白色背景上更突出？用蓝色光源——红色字符吸收蓝光变黑，白色背景反射蓝光变亮，对比度直接拉满。&lt;/p&gt;
&lt;h3 id="镜头焦距只是起点"&gt;镜头：焦距只是起点&lt;/h3&gt;
&lt;p&gt;镜头选型的第一步是算焦距，公式不复杂：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;焦距 = 工作距离 × 芯片尺寸 / 视场
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;但焦距选对了只是及格线。真正容易踩坑的是两个参数：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;景深&lt;/strong&gt;——简单理解就是&amp;quot;前后多大范围内的东西是清楚的&amp;quot;。景深越小，对焦平面以外的物体就越模糊。影响景深的三个因素：光圈越大景深越小，焦距越长景深越小，工作距离越近景深越小。做尺寸测量时，如果工件有厚度（比如一个盒子），景深不够就会出现&amp;quot;上面清楚、下面模糊&amp;quot;的问题。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;畸变&lt;/strong&gt;——普通定焦镜头天然有畸变，短焦是桶形畸变（像被捏扁了），长焦是枕形畸变（像被拉长了）。人眼看不出小于 2% 的畸变，但做精密测量时，边缘 1mm 的畸变就是实打实的误差。这时候就得上&lt;strong&gt;远心镜头&lt;/strong&gt;——它的特点是&amp;quot;无论物体离镜头远近，在图像里的大小不变&amp;quot;。类比一下：普通镜头像人眼看东西，近大远小；远心镜头像用尺子量，不管尺子放多远，读数不变。&lt;/p&gt;
&lt;p&gt;另外注意镜头和相机的接口匹配：C 口后截距 17.5mm，CS 口 12.5mm，差 5mm。CS 口相机接 C 口镜头要加 5mm 接圈，反过来不行。接口不匹配，图像就是糊的。&lt;/p&gt;
&lt;h3 id="相机一个公式定成败"&gt;相机：一个公式定成败&lt;/h3&gt;
&lt;p&gt;相机选型的核心公式：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;像素精度 = 视场 / 分辨率
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;意思是：图像上一个像素代表实际空间中多大的尺寸。&lt;/p&gt;
&lt;p&gt;举个例子：用 500 万像素相机（2592×1944）拍 80mm 宽的视野，像素精度 = 80 / 2592 ≈ 0.031 mm/pixel。也就是说图像里一个像素对应实际 0.031mm。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;经验值：要检测的最小特征，至少要在图像中占 2~3 个像素。&lt;/strong&gt; 如果你要检测 0.1mm 的缺陷，像素精度至少要到 0.03~0.05mm/pixel，否则缺陷在图像里就一两个模糊的点，算法根本抓不住。&lt;/p&gt;</description></item></channel></rss>