大象笔记

知者行之始,行者知之成

OpenCV 图像识别/图像处理在线服务的技术选型

说实话单纯看书学习 OpenCV 太枯燥了,看完基本就都忘光。所以,我决定一边看书,一边把通用的图像处理、识别功能做成在线服务。 首先就遇到了技术选型的问题,这里记录一下。 目标 这套后台可以同时支撑 web 网页、微信小程序、APP。 后台选型 在 golang 与 python 的方案之间纠结,但是最后还是选择了 python。原因: opencv 官方文档基本都是 python 和 c++ 的,第一次学习 opencv 就用 golang 有点冒险 python 做图像识别的网上资料相对多很多。我看的几本 opencv 书籍也都是用 python 来讲解的 至于 python 的后台 ...

阅读全文...

2021年终述职报告

好多年没有写述职报告了,用 ppt 写更是第一次。甚至 ppt 怎么编辑都已经忘记了。 为何要记录一下这次述职报告 我觉得这个过程中心态的变化很有趣,有必要做个总结。 起初我觉得这是一件没有意义且浪费时间的事情,所以用了不到五分钟,将各个季度的总结拼凑了一下,就邮件提交了。实话实说,我对别人给我打多少分不太在乎。 但据我们部门领导说,其他部门太卷了,我们提交的ppt完全没有体现优势,所以这事就由个人考评上升为了部门级的事件。确实是这样,ppt 写的太简陋,对部门同事也是一件不负责任的行为。于是,重新编辑,具体就是把开发的解决方案的界面截屏,一个项目一个截屏,贴了一下。 排练、紧张 提前一天,我 ...

阅读全文...

Jetpack Compose Admob 广告不显示问题排查

尝试在 Jetpack Compose 中添加 Admob 广告,参考的是下面链接里的第一种方案 https://stackoverflow.com/questions/68855709/how-to-show-a-banner-ad-in-jetpack-compose 但是,无论是在 Android 模拟器里,还是在真机上调试,都无法显示广告。 日志 2022-01-04 22:37:55.551 6242-6353/com.sunzhongwei.shelflife E/chromium: [ERROR:cookie_manager.cc(137)] Strict Secure Cook ...

阅读全文...

Android 模拟器:xxx requires the Google Play Store, but it is missing

在排查 Jetpack Compose 中 Admob 广告不显示问题时,发现一个运行时错误: xxx requires the Google Play Store, but it is missing 我其实很诧异,Android 模拟器里不都运行的是 Google 的原生系统么?为何会找不到 Google Play? 我打开 AVD 虚拟设备列表,发现确实如此。我当前正在使用的虚拟机确实没有 Play Store。 解决办法 其实就是一句话,新建一个带 Google Play Store 的设备。。。 在选择硬件的时候,会清楚的看到,部分手机型号带 Play Store,而其他的则不 ...

阅读全文...

参加 Google Play 学院 21 天进阶计划喜得订制版音箱

上个月参加了 Google Play 学院 21 天进阶计划的活动,坚持打卡,并学完了所有的在线课程。功夫不负有心人,抽到了活动大奖: 一个 Google Play 定制版音箱 一件 Google 卫衣 旅行大礼包。。。实际上是一堆贴纸和标签,圆珠笔,开箱就被我闺女抢走 这个复古音箱非常有爱,居然有收音机功能,很适合听新闻。让我想起了小时候家里的第一台巨大的收音机,边写作业边听广播,伴我走过了九年义务教育。同时这个音箱也支持蓝牙,数据卡,音频线,功能强大了很多。 Google Play 学院 回归主题,Google Play 学院里的课程给我启发很大,有很多实战经验分享,对于我这种想尝试 ...

阅读全文...

驾驶证过期,请假去开发区政务服务中心更换驾照

突然发现我的驾驶证在今年 8 月份就过期了,于是这周在给客户交付完之后,请了一天调休假去处理。 主要是担心年底查酒驾查得严,别被误伤到。再就是拖久了不会让我重新考吧。 早上坐公交到开发区政务服务中心 B 座 2 楼,也不需要取号,在自助体检机排队做体检即可。 没几个人排队,前面就两个人,不到 10 分钟就轮到了我。这个体检机非常便捷,检测视力、色盲、听力、四肢、身高都实现了自动化,比我想象的方便多了。唯一令我不满的是,就这还要收 40 的体检费,不便宜。 体检完当天取不了新的驾照,说是需要等 2 ~ 3 天才能取。实际上,第二个下午 5 点,我就收到短信通知说新驾驶证已经制作完成,可以去取了 ...

阅读全文...

电脑机箱嗡嗡响,手按上去就没声音

家里的 Dell 台式机估计上了年纪,开始发出嗡嗡的异响。查了一下,说是机箱内风扇引起的共振。 简单粗暴的解决方案 压本书或者压瓶水上去试试吧,可以解决共振引起的噪音 确实找了两本书放到机箱上之后,噪音小了很多。 治本 机箱内常见的三种风扇的位置: 电源风扇: 在机箱的背部,插着电源线的位置 CPU风扇: 在主板的中间位置,凸起的部分,就是CPU散热 显卡风扇: 插显示器线的位置就是显卡,当然风扇是在机箱里边 先不折腾了,等放书都治不了的时候再看吧。 参考 https://www.zhihu.com/question/302693288 ...

阅读全文...

紫外/可见/近红外光谱(UV / VIS / NIR)

VIS 是什么 在 PlantCV 的官方文档中经常会看到 VIS 这个英文缩写,例如: https://plantcv.readthedocs.io/en/stable/tutorials/multi-plant_tutorial/ To run a multi-plant workflow over a single VIS image there are two required inputs: Image: Images can be processed regardless of what type of VIS camera was used (high-throughput p ...

阅读全文...

单片机 4G 模块进行 MQTT 通信的抓包方法

设备调试中发现 4G 模块进行 MQTT 通信总是出问题,即 QoS 为 1 的情况下,总是收到重复的 Publish Message。即便回复了正确的 Pub ACK 包,也依旧会收到重复的 Publish Message。但是 Wifi 模块下就没有这个问题。 之前 Wifi 模块是通过笔记本 Wifi 共享,在笔记本上使用 Wireshark 进行抓包调试的。但是 4G 模块由于是直连腾讯云 MQTT 服务器,所以没法使用这种方案调试。后来想了个方案就是在自己的公网服务器上设置个转发服务,本地设备通过这个转发服务跟腾讯云 MQTT 服务器通信。这样就能在服务器上对数据包用 tcpdump ...

阅读全文...

《OpenCV 轻松入门:面向 Python》读书笔记

上个月为了学习 PlantCV 做植物图像识别,就找了本 OpenCV 的书《OpenCV 轻松入门:面向 Python》作为基础入门。这本书浅显易懂,非常适合像我这样的 OpenCV 新手阅读。很快翻完,了解了不少基础概念,对看懂代码非常有帮助。今天跟我联调 MQTT 的同事被抓去车间干苦力,闲来无事,我就把这本书的笔记整理了一下。 二值图像 二值图像是指仅仅包含黑色和白色两种颜色的图像。 这种格式下,可以把一张图片理解为只包含 0 或 1 值的二维矩阵。 在 OpenCV 中,最小的数据类型是无符号的8位数。因此,在OpenCV中实际上并没有二值图像这种数据类型,二值图像经常是通过处理 ...

阅读全文...

微信小程序蓝牙进行设备参数配置经验总结

逻辑 打开小程序配置页面时,蓝牙协议拉取所有配置项 编辑修改后,检测修改项,逐一发送修改指令。注意间隔时间 发送保存指令 加载速度体验优化 如果配置项很多,达到 20 项以上,每次间隔几百毫秒拉取(防止设备死机),在用户体验上会非常不好,一种解决方案是,增加一条蓝牙指令,用于一键拉取所有配置项。这样就不需要批量发送一堆拉取指令了。 微信小程序端只需要等待设备逐一推送即可。 蓝牙协议解析 其实通过命令编号来解析最简单,而且可以方便做后期扩展。 我之前由于太天真,做了各种抽象,以为能以更少的代码来实现解析。 实际上,当遇到设备端协议由多人编辑,并且不可控时,会导致协议变的毫无规律,毫无规则,这 ...

阅读全文...

微信小程序支付前,使用 MQTT 检测设备是否在线

需求场景 例如,用户要出停车场,进行扫码支付,但是需要在支付之前判断一下起杆设备是否在线。 如果不在线需要给出提示,防止收了钱,但是没有起杆。 TODO [x] 腾讯云 MQTT 接口 [x] golang api [x] controller 更名为 mqtt.go, 把 mqtt 相关的操作都放在这个 controller 里,方便共用一些配置 [x] 封装 DescribeDevice。参数为 deviceId,获取 device,从而得到设备名,然后 mqtt 查询在线状态 [x] 线上测试 [x] 小程序端:预支付这里调用了两个 http 微信接口,可能等待时间有点长,导致用户点两 ...

阅读全文...