Using OpenCV
背景
最近这几年人工智能大火,公司也想向现有产品(移动销售自动化管理软件)中加入些沾边的功能,于是想到现在销售填报数据时将现有的人工采集数据(超市货架中货品种类和数量统计)方式改用机器来做。让机器识别出货物首先要给机器大量的图片让它学习,然后通过图像识别技术来辨识超市货架的货物,并计算出数量。
本来按着这个思路下去应该是先进行 CoreML 等方式的调研,然后线下人员采集大量产品图片,结果公司领导不知道是基于什么原因,要求移动端开发先做个图像分割的应用,将一张超市货架的图片拍照后,再手动将每层货架标识出来,然后手动分割每层货架的产品,显然这种方式太没有技术含量了,所以用业余时间研究了一下 OpenCV ,看看有什么方式能实现自动检测出货架,并分割出每个产品。
经研究,通过直线检测方式能检测出货架位置,但是图像分割的效果由于光线以及产品摆放方式等原因会效果较差,趁着印象深刻的时候,把用到的知识点以及遇到的问题和解决方案总结一下。
书籍推荐
如果想用好 OpenCV,就要对 OpenCV 能做什么有非常清楚的了解,所以 《Learning OpenCV 3》 是个人感觉最有用的书,第三版好像还没有中文版,所以看了英文版,对比了下中文版的第一版,第三版内容更丰富目录结构更合理。另外推荐 《Mastering OpenCV with Practical Computer Vision Projects》,在没有思路的时候可以借鉴一下。
OpenCV 安装和使用
OpenCV 是 Open source computer vision 的缩写,它的目的是提供一种更简单的方式来快速处理复杂的视觉应用。