尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

车标识别小程序开发实录:微信小程序与图像识别技术实战

车标识别小程序开发实录:微信小程序与图像识别技术实战 “我是车标王”这个小程序出生的起因特别小——去年冬天我在一个地下车库找不到车了。那个车库负二层顶灯白晃晃车位也没编号我绕着柱子走了三圈最后是靠“车尾那个银色奔驰标”才想起来车停在哪个方向。回家路上我就在想停车场最尴尬的不是迷路而是你根本说不清自己的车长什么样。后来我把这个痛点拆了一晚上决定做一个微信小程序拍照识别车标告诉你这是什么品牌、什么车型再把车标知识做成闯关题顺便帮你记住停车的位置。它叫“我是车标王”。这篇文章我会把整个项目从创意到上线拆开讲包含六个核心场景的设计逻辑、技术选型、识别方案实现细节以及我在开发过程中踩过的坑。适合正在做微信小程序、或者想上手图像识别但对完整项目没底的朋友参考。项目本身不复杂但麻雀虽小五脏俱全前端要适配各种机型服务端要做特征匹配上线之后还要跟平台规则打交道。如果你正准备做一个小工具类小程序这篇应该能帮你少走不少弯路。1. 从一次找车尴尬到产品立项我是车标王在解决什么1.1 停车场的真正痛点不是找不到车是记不住车大型停车场找车难这是每个开车的人都遇到过的事。商场地下车库动辄几千个车位区域划分又混乱很多人习惯用“对着电梯口”“停在B区拐角”这种模糊记忆来找车结果一转头全忘了。等到回来的时候只能拿着车钥匙一遍遍按解锁键靠着车灯和喇叭声判断方位。但这里有个更隐蔽的问题哪怕你看到了一排排的车你也未必认得出哪辆是自己的。除非你对自己的车非常熟悉否则在不常去的停车场里一眼扫过去全是“白色的车”“黑色的SUV”很难精准定位。这个场景我在做用户调研时被反复验证真正让人崩溃的不是楼层记错了而是人站在车海面前却描述不出自己的车到底是什么样的。车牌识别不是更好的方案吗理论上是的但实际上车牌在停车场里往往被柱子、旁边车辆遮挡光线差时也看不清而且很多人对自己的车牌号记忆并不深刻报出来还要想几秒。车标不一样它挂在车头车尾最显眼的位置颜色、形状都很有辨识度哪怕记不住具体车型一句“那个蓝色圆标”就能让大脑快速锁定目标。“我是车标王”最初的产品逻辑就这么简单用一台手机的摄像头把“我的车长什么样”这件事固化下来变成可检索的记忆。1.2 六个使用场景与创作故事产品立项前我把用户需求拆成了六个场景。这六个场景不是坐在电脑前拍脑袋想出来的它们分别来自我自己的经历、朋友的吐槽和一些受访者的真实反馈。每个场景我都直接用“创作故事”的方式来记录。第一个场景是停车场找车。这是最原始的需求来自我在商场负二层的经历。我后来做了个“拍车留位”功能到达停车场后拍下车标和停车区域小程序自动记录拍摄时间和位置回来时打开记录按图索骥。这个功能看着简单实际开发时才发现难点在于让用户“愿意拍”——所以我把入口做得极其直接打开小程序就是一个大大的相机按钮一秒钟完成拍照和记录。第二个场景来自一个做销售的朋友。他约客户吃饭对方开了一辆很冷门的越野车他在停车场看到车标却不认识饭桌上又不敢直接问怕显得自己见识少。这种“商业社交中的认车尴尬”比停车场找车更普遍。于是小程序里加了“即时识别”模式见到不熟悉的车标拍一张品牌归属、产地、价格区间立刻显示出来不用开口就能心里有数。这功能后来被很多销售和商务人士使用用户留言说“终于不用在客户面前假装认识车了”。第三个场景是新手司机认车。我表妹刚拿驾照时停车位上的车她几乎都叫不出品牌每次在停车场找车都像开盲盒。她需要一种轻量、不枯燥的车标学习工具。基于这个场景我在小程序里做了车标百科页按国家、品牌分类搭配简短有趣的品牌故事——比如某个品牌的车标为什么是盾形某个车标的寓意来自创始人故乡。把知识做成“可浏览的图鉴”比背单词有意思得多。第四个场景来自停车场管理员的真实反馈。一个朋友的父亲在小区停车场做管理进出车辆登记全靠手写小票车型写错、字迹潦草是常事。他想要电子化但整套停车系统报价太高。我给他看了“车标王”的识别结果页他说如果有一个拍照就能自动填“品牌车型”的工具那太方便了。所以我在记录功能里增加了“车辆登记模式”管理员或代客泊车人员拍照后自动带回品牌车系信息导出成Excel表格方便后续归档。第五个场景和购车有关。很多人逛二手车市场或者停车场看到一辆喜欢但叫不上名字的车想查品牌、口碑、保值率又不想装一个沉重的汽车资讯App。“我是车标王”的识别结果页里我挂了品牌价位区间、常见口碑标签和“适合谁开”的简短结论给用户一个快速参考。它不替代专业汽车平台但能解决“看着眼熟却叫不出名字”的好奇心。第六个场景特别出乎我意料是亲子教育。上线后陆续有用户反馈说孩子特别喜欢玩“看图识标”闯关模式去商场路上看到车标就喊“爸爸快拍题”。于是我把闯关模式单独强化了图片题、文字题、限时挑战答对攒积分积分可以兑换车标壁纸。原本是工具类小程序硬生生多出了一个“儿童科普”的使用场景。后来我想想也对车标形状像徽章对小朋友天然有吸引力用它来启蒙汽车知识其实很自然。1.3 产品定位从哪来轻识别、轻知识、轻游戏六个场景梳理完之后产品画像非常清晰不是做专业汽车工具而是做一个让普通车盲“不尴尬”的小助手。三个关键词轻识别、轻知识、轻游戏。轻识别打开就能拍结果三秒内返回轻知识每辆车标配一段百字以内的故事和一句定位总结不堆参数轻游戏闯关机制让用户愿意反复打开而不是用完即走。这决定了技术路线的取舍。识别准确率当然重要但用户容忍度其实很高他们讨厌的是“识别失败后毫无建设性反馈”。所以我做的不是硬核AI引擎而是“识别兜底”的产品车标库覆盖主流品牌识别不了时引导用户换个角度重拍而不是简单报错。产品定位和技术实现是互相拉动的这一点在后面识别方案的设计里会体现得很明显。2. 技术选型与整体架构设计2.1 为什么用uniapp开发微信小程序技术选型阶段我几乎没有纠结前端用uniapp Vue3开发微信小程序后端用Python Flask提供识别接口数据库用轻量的MySQL。为什么是uniapp而不是原生小程序理由很实际。首先是开发效率。原生小程序虽然性能好但WXML、WXSS、JS三件套写起来比较繁琐页面一多维护成本明显上升。我用Vue3的语法组织页面逻辑单文件组件里同时写模板、样式和脚本结构清爽。uniapp在HBuilderX里还有配套的模拟器、真机调试、条件编译调试体验比原生开发差不了太多。其次是多端复用的可能性。“我是车标王”当前只发微信小程序但uniapp写完后可以编译到支付宝小程序、抖音小程序、百度小程序甚至H5。以后要拓宽渠道不需要重写前端只要按平台差异做少量适配。这种“留后路”的选型对个人开发者来说非常重要——初期资源有限不可能为每个平台单独维护一套代码。如果你问我什么时候应该选原生而不是uniapp我的答案是当你需要大量使用小程序私有能力、对性能极其敏感时比如复杂的canvas绘制、实时音视频原生更稳。但“车标王”这种以拍照上传、数据展示、简单交互为主的小程序uniapp完全够用。我最终的项目结构大概是这样的src/pages/index —— 首页拍照与停车记录src/pages/result —— 识别结果展示src/pages/encyclopedia —— 车标百科src/pages/quiz —— 闯关答题src/pages/mine —— 个人中心与历史记录src/common/request.js —— 统一请求封装这里有一个很关键的体会项目一开始就要把目录拆干净别想着“先堆在一起后面再重构”。小程序页面之间的联动本来就多目录不清晰后面加功能时你会迷路的。2.2 后端识别方案自建特征库还是接第三方API这是整个项目最核心的技术决策车标识别怎么做市面上有通用的物体识别API、车牌识别API但专门做“车标识别”的成熟云服务其实不多而且按次收费对个人项目来说成本可控但不够灵活。我一开始就倾向于自建识别方案。自建识别有两个路线深度学习分类和传统特征匹配。深度学习需要大量标注好的车标图片每种车标至少几百张还要不同角度、光照、遮挡的样本。个人项目要凑齐这套数据短期内不现实。传统特征匹配就友好得多每个车标只需要一张或几张标准正面图片提取特征描述子拍照识别时再用同样的算法提取特征找匹配度最高的一个。对平面、纹理明确的车标来说效率和准确率都很可观。我选用的具体方案是OpenCV的ORB特征检测算法。ORB结合了FAST角点检测和BRIEF描述子最大的优点是计算速度快而且不需要GPU一台普通云主机就能跑。步骤是这样的全局收集主流车标的标准图片约220个品牌为每张图片提取ORB特征点并保存到特征库用户上传照片后服务端同样做预处理和特征提取然后与库中所有车标的特征逐一匹配用匹配点数量加上“最近邻距离比”综合排序取第一名作为识别结果。为什么不用SIFT或者SURF这两个算法精度略高但它们有专利限制而且特征点数量更大特征匹配耗时更长。对于车标这种形状规整、颜色对比鲜明的目标ORB完全够用还能把单张识别压到几百毫秒以内。后来的实测也验证了这一点在光线正常、车标清晰的情况下Top1识别准确率能做到90%左右常见品牌比如大众、丰田、奔驰、宝马识别率超过95%。2.3 数据模型设计车标库不只是“一张图”车标识别只是入口识别完之后要给用户展示什么这才是产品价值的载体。我设计了四张核心表brand表存车标基础信息字段包括id、品牌名称、品牌英文名、所属国家、品牌故事、价格区间标签、车标图片URL、车标标准特征文件路径。这里最重要的是“所属国家”和“价格区间标签”它们直接驱动百科页的筛选和识别结果页的“一句话定位”。series表存具体车系id、brand_id、车系名称、动力类型燃油/纯电/混动、常见价位、一句话口碑描述。这张表前期数据量不大我手工录了大概600多个常见车系保证用户识别出品牌后能进一步看到“这辆车大概什么档次”。car_record表存用户拍照找车记录id、openid、图片URL、识别出的brand_id、用户手动补充的停车位置、拍摄时间。这张表是“停车场找车”场景的落点也是后面做运营统计的依据。quiz_topic表存闯关题库id、题目类型看图识标/文字识标、展示图片URL或描述文字、正确答案brand_id、干扰选项。闯关题不是随便生成的我尽量把容易混淆的车标放在同一道题里比如“宾利和比亚迪”“兰博基尼和拖拉机”增加趣味性。表结构设计时有一个经验不要一上来就建一堆冗余字段。我最初给brand表设计了十几个字段包括“官方微博”“粉丝量”这种完全用不上的开发到一半全砍了。数据模型要跟着产品走功能没确定前宁可少加字段也别让数据库变得难维护。3. 核心功能实现与关键代码落地3.1 前端实战首页拍照、识别结果页、百科筛选、闯关答题我把前端拆成四个主要页面。首页是所有功能的入口也是“找车记录”的起点。页面顶部是一个全屏相机预览区域调用uni.chooseImage唤起系统相机或相册下方是“最近识别”的历史记录列表。这里有个细节我刻意把“拍车标”和“查百科”两个入口分开避免用户在紧急场景下还要多点一步。拍照后的处理链路是这样uni.chooseImage拿到原始图片路径先做压缩uni.compressImage再把压缩后的图片通过uni.uploadFile上传到服务端。服务端完成识别后返回json前端跳转到结果页。上传时我用了一个7天的临时目录用户不重复查看的图片会被定期清理控制存储成本。识别结果页是产品体验的重头戏。页面从上到下依次是车标大图、品牌中文名和英文名、品牌所属国家和价格区间、一段品牌故事、同品牌热门车系列表以及一个“认识一下”的收藏按钮。为了让结果页不显得呆板我用了卡片式布局车标图片做圆角阴影处理车系列表支持横滑。点击车系可以展开看一句话口碑这个数据来自series表。百科页承担“轻知识”功能。左侧是一排品牌字母索引栏我用了类似通讯录的样式用户点击某个字母右侧车标列表自动滚动到对应位置。“我是车标王”里30多个国家、220个品牌全部按首字母分组。这个列表不搞无限加载的炫技直接前端拿到全量数据做本地搜索和分组渲染数据量在几千条以内时性能完全没问题。闯关答题页的交互比较轻每道题显示一张车标图或文字描述下面四个选项按钮单选框样式答对加分、答错显示正确答案然后滑到下一题。这里用了一个我自己封装的长按拖拽排序组件用在“我的收藏排序”功能上实现思路是touchstart、touchmove记录拖拽位置再配合scroll-view做滚动。如果你是新手这个功能可以先用uni-moveable或者插件市场现成的组件顶上不要自己从头写。3.2 识别服务实现从图片到车标品牌的完整流程服务端我用Python Flask搭了一个轻量接口核心代码在网上能搜到很多但组合起来并且能在小程序里稳定跑还是有一些细节要处理。识别流程是这样的图片预处理用户上传的图片五花八门有的昏暗、有的模糊、有的带着一大片车身。服务端先读图转灰度缩放到统一宽度我用的512像素做一次高斯模糊降噪。预处理的目标不是让图片变好看而是让后续特征提取更稳定。ORB特征提取OpenCV的ORB_create创建特征提取器detectAndCompute同时得到关键点和描述子。每个点生成一个二进制描述子方便存储和比对。特征匹配我预先把220个车标的标准图特征都加载到内存里用户图片的特征和每一个标准图特征做暴力匹配使用汉明距离。匹配完成后做“最近邻距离比检验”只保留距离比小于0.75的优质匹配点然后统计优质匹配数量。结果排序与兜底所有品牌的匹配数从高到低排序如果第一名匹配数超过30就认定识别成功同时计算一个置信度如果第一名只有十几二十个匹配点说明结果不可靠返回“识别失败”提示用户换个角度重拍。import cv2 import numpy as np def extract_features(image_path): img cv2.imread(image_path, cv2.IMREAD_GRAYSCALE) img cv2.resize(img, (512, 512)) img cv2.GaussianBlur(img, (5, 5), 0) orb cv2.ORB_create(nfeatures1000) kp, des orb.detectAndCompute(img, None) return kp, des def match_features(query_des, db_des): bf cv2.BFMatcher(cv2.NORM_HAMMING, crossCheckFalse) matches bf.knnMatch(query_des, db_des, k2) good [] for m, n in matches: if m.distance 0.75 * n.distance: good.append(m) return good服务启动时所有品牌的特征描述子会一次性load进内存避免每次请求都读文件这样接口响应时间能稳定在300到600毫秒。云主机配置不需要很高1核2G就够跑初期流量。3.3 动态标题、导航栏适配和iOS兼容细节小程序开发绕不开“页面头部”这件事。“我是车标王”的识别结果页会根据识别结果动态修改标题用户识别出奔驰时标题显示“奔驰”识别出丰田时显示“丰田”这样用户在历史记录里一眼能看出当时识别的是什么车。实现方式很简单uni.setNavigationBarTitle({ title: brandName })这个API在onshow或者数据请求完成后调用即可。有一点坑如果你在页面onShow里set而页面又在启动时有异步数据标题可能会闪一下才开始改。可以在onLoad里先设默认标题“我是车标王”数据返回后再set成品牌名体验会好很多。顶部导航栏高度适配是另一个烦心事。不同机型的胶囊按钮位置不一样尤其在iPhone和安卓全面屏上差异很大。我的做法是用uni.getMenuButtonBoundingClientRect获取胶囊按钮的位置信息再结合系统状态栏高度动态计算自定义导航栏的高度保证右上角按钮不会和胶囊重叠。代码不复杂但一定要在onLoad里调用并且放在页面最前面不能等页面渲染完再去算。iOS上还有一个很诡异的细节当页面内容使用scroll-view时会偶发组件渲染异常比如某些按钮的点击区域错位。我排查了一晚上最后发现是scroll-view内部同时使用了position: sticky的元素在iOS上会互相干扰。解决办法是把需要固定的标题栏提到scroll-view外面页面结构改成普通view scroll-view的组合。小程序不是浏览器很多CSS特性支持得不完整开发时不能太相信“浏览器里长什么样小程序里就长什么样”。4. 开发实录我在这个项目里踩过的坑4.1 图片上传的变形记压缩、旋转与格式第一个坑来自图片压缩。用户拍照上传的图片动辄3MB到5MB直接上传不仅慢还会浪费云存储流量。我刚开始用了uni.compressImage压缩到宽800px但发现识别率反而下降了——因为车标本身在图里只占很小区域过度压缩导致特征点大量丢失。后来我把压缩策略改成“限制长边为1280px质量压缩到0.8”同时裁掉图片上下的多余背景只保留中间60%的区域去提取特征。这样既保证上传体积可控又保住车标的特征量。实测下来上传体积从4MB降到400KB左右识别率不降反升。所以压缩不是越狠越好要找平衡点。第二个坑是图片旋转。安卓和iOS拍照时图片经常带EXIF旋转信息后端用OpenCV直接读图时如果不处理旋转车标可能是横的特征匹配自然全错。我的解决方式是前端把图片转成canvas画布手动旋转到正常方向再上传。这个操作用到了uni.getImageInfo读取图片方向然后canvas重绘代码量不大但必不可少。4.2 识别不准光线、角度、遮挡问题怎么解车标识别最大的敌人不是算法而是拍照环境。地下停车场光线昏暗、车标被雨水糊住、车头对着柱子导致视角太偏这些都会让特征匹配失败。我上线后发现“识别失败”率一度高达15%用户抱怨很大。我做了三件事来缓解。第一识别失败时不是简单说“识别失败”而是引导用户“请靠近车标重新拍摄尽量让车标位于画面中央”并弹出一个取景框辅助线。第二特征库里给常见车标多存了几个角度版本正面、稍微俯视、夜晚闪光灯下的效果每种品牌平均2到3张标准图。第三在结果页给用户一个“手动选择品牌”的入口如果识别错了可以直接搜索修正这个修正动作会回传服务端作为后续优化的样本。三维物体在不同角度下形态差异很大车标也一样。传统特征匹配的瓶颈就在这里——它没有“理解”车标的能力只是机械地比对点与点之间的关系。如果以后要提升上限方案是收集更多实际场景图片做模型微调或者接入一个成熟的车标识别云服务做二次确认。但对个人项目来说把20个高频品牌的识别率做到95%以上比追求220个品牌的100%准确率有意义得多。4.3 备案、支付与微信生态的规则坑小程序开发的另一大工作量来自平台规则而不是代码。我一开始没仔细研究个人主体和企业主体的差异结果到申请支付时才发现个人主体的小程序无法开通微信支付自然也不能卖题库会员。用户投诉最多的就是“商城可以进去但下单时提示支付能力已被限制”。这个坑在选型阶段就该避开。如果你要做任何涉及交易的小程序建议提前确认主体资质个人开发者要么先做纯免费工具要么注册个体工商户并完成微信认证。我是后来补办了企业主体才把“车标壁纸商店”功能上线白白多等了两周时间。备案备注信息怎么填也是一件小事但容易卡审核。我在“小程序备案”里填的服务内容描述是“车标识别与汽车知识科普服务”并在备注里补充了“不涉及新闻、金融、医疗等特殊类目仅提供车标图像识别与品牌信息展示”。审核一次通过。经验就是描述要具体、范围要收窄千万别写“提供综合信息服务平台”这种自我加戏的话。还有一个很常见的错误开发者在微信公众平台添加了项目成员但成员用自己微信扫码调试时控制台会报“登录用户不是该小程序的开发者”。这不是代码问题是你在“成员管理”里漏加了对方微信加上之后重新编译即可。这个坑几乎每个团队都踩过记下来省得再查一次。4.4 真机调试与抓包排查小程序开发最怕的是“模拟器正常真机就崩”。车标王有一个发布前的稳定性问题识别请求在Android正常在iOS上偶尔会超时。我用Charles抓包看请求耗时发现是图片上传阶段卡住了原因是iOS的TLS握手比Android慢加上云主机证书链配置不完整导致HTTPS建连时间长。排查这种问题推荐先把手机代理指向Charles然后在小程序开发者工具里勾选“不校验合法域名”做本地调试。电脑端微信小程序也可以抓包但要注意微信对代理有“允许抓包”的开关设置不对会直接断网。Wireshark放在这里反而不好用它抓的是网络层数据对分析HTTPS内容没帮助Charles这类代理工具才是定位接口问题的首选。我建议把所有请求日志统一输出到服务端这样用户反馈“识别失败”时我能在后台看到具体是哪个环节出的问题图片上传失败、还是特征匹配超时、还是识别置信度过低被判失败。没有日志你就像蒙着眼睛修电脑。5. 常见问题与排查技巧实录5.1 高频问题速查表把项目上线以来用户遇到的高频问题整理成了表格方便直接对照症状可能原因解决方案识别结果一直提示“识别失败”图片过于模糊/车标太小/特征库缺品牌引导用户重新拍摄靠近车标保证画面中央后续增加标准图版本小程序顶部导航栏被胶囊遮挡自定义导航栏高度未做适配使用getMenuButtonBoundingClientRect动态计算导航栏高度get参数里的等号变成百分号URL未做编码处理用encodeURIComponent/decodeURIComponent转义和解析参数支付时提示“支付能力已被限制”小程序主体未开通支付/类目不符办理企业主体并完成微信认证确认服务类目上传图片后服务端拿到的方向是横的iOS/Android EXIF旋转信息差异前端用canvas重绘图片修正方向华为/鸿蒙手机上视频播放异常小程序内核兼容性问题优先使用系统播放器组件或转换成HLS/m3u8格式uni-datetime-picker在scroll-view内位置错乱iOS对picker在scroll-view内渲染异常把picker挂载到page根节点或用普通view包裹后再定位小程序从App端拉起后无法传参App端未配置URL Link或Scheme在公众平台配置唤起参数并用onLoad的options接收这张表里我最想强调的还是“识别失败”这一条。技术上的兜底很简单但产品上的体验设计才是关键识别失败时你要告诉用户接下来怎么做而不是让他觉得是自己的问题。5.2 两个实战排查案例给你讲两个真实的排坑过程你会对小程序的稳定性上心。第一个案例识别接口在iOS上平均耗时2.3秒在安卓上只要800毫秒。用户反馈集中在iPhone上我一开始怀疑是不是代码里调用了某个iOS不兼容的API检查半天没发现问题。后来抓包看到iOS上传的图片体积明显比Android大才意识到是前端压缩逻辑里的一个分支判断写错了iOS走的是“原图上传”分支。修复压缩逻辑后iOS平均耗时降到了1.1秒。这个案例告诉我性能问题不一定在服务端很多时候是前端在不同平台的行为差异。第二个案例有个用户通过扫码进入小程序后顶部导航栏整体左移了一截。这个bug在我自己的手机上复现不了后来让对方发来截图发现是手机开启了“分屏模式”。分屏会改变窗口尺寸而我的导航栏高度在onLoad时只计算了一次没有监听窗口变化。在onResize里重新计算导航栏布局之后问题解决。小程序对分屏、平板和折叠屏的适配经常被开发者忽略但真实用户不会只用最标准的机型。5.3 上线后的用户反馈与运营迭代“我是车标王”上线第一周用户量不大但留下了一条让我印象深刻的评论“以后再也不用在停车场里绕圈了。”这就是当初做这个产品的初心看到它被真实使用成就感比任何技术方案都实在。用户反馈最多的是希望增加“实时找车位”和“AR识别”。AR识别受限于小程序相机能力和识别速度短期内我不会做但“实时找车位”其实已经有雏形了——既然用户到达停车场时会拍照记录那这个记录加上车位编号、楼层信息就是天然的找车位工具。后续我想加一个“停车位置分享给家人”的功能特别适合家人共用一个车、或者代驾接单后需要确认车辆位置的情况。运营上我每两周手动导出一份识别日志分析哪些品牌识别频率高、哪些车标的“识别失败”占比高。高频识别但失败多的情况说明特征库需要补样本高频识别且成功率高的情况说明用户对这类车标有认知需求可以围绕它们做更多内容。用数据驱动内容和服务调整比闷头加功能高效得多。6. 写在最后的一点技术感受这个项目做下来我最大的体会是做小程序最值钱的不是代码能力而是把生活痛点翻译成技术需求的能力。“停车场找不到车”听起来是个小事但一旦把它拆成“拍照记录”“图像识别”“按时定位”这些具体功能它就是一个值得做的小程序。如果你也想做一个图像识别类的小程序我的建议是不要一上来就追求深度学习模型。先判断你的识别目标是否纹理清晰、形态稳定、数据量可控如果是传统特征匹配完全能打。先用最简单的方案把产品跑起来再用数据决定要不要上更重的模型这个顺序不能反。还有一个私人心得识别不准时别急着调算法先看看图片预处理。我们发现很多识别失败是因为图片过曝、过暗、或者旋转后没修正把这些根因处理掉准确率能提升一大截。车标识别看似是算法问题实际三分之二的时间都花在了图片工程上。最后分享一个实用的小技巧如果你也是uniapp做微信小程序调试时把“小程序开发环境不校验合法域名”打开但上线前一定要关掉并且配置好白名单域名。我因为忘配置downloadFile合法域名导致车标图片加载不出来被用户连续反馈了三天才定位到问题。这个配置项在微信公众平台的“开发管理—服务器域名”里别嫌麻烦提前配好。
返回列表