说实话写这篇文章的时候想了很久, 最近接到一个识别图片中手画矩形的活儿, 很有压力。
首先我由于我最近上了丁濛老师的图像识别的课, 首先我想的是可不可以识别矩形的四条直线, 在网上找了很多资料自己尝试着去写, 但是发现直线是某一方向的连续像素点, 如果是正规的矩形我们可以做到这一点但是手画矩形不能保证连续像素点, 所以这个idea过掉。
然后我又想了一个矩形有四个角, 那我能不能通过识别角点的方式来辨认矩形呢, 但是还是经过尝试之后发现由于应用场景是在一本书中, 那么字, 书本到处都是角点, 无法辨认,这个idea过掉。
于是我去找了丁濛老师, 丁濛老师一开始也pass掉了我前两个想法, 丁濛老师后来的想法是既然矩形的边的一定是在两行的空白处那我能不能去只识别空白之间的像素点呢, 这是个可行的想法但是对于我来说不太好实现, 于是pass。
丁濛老师的下一个想法是机器学习。 一个矩形, 它的特征就是它左面的一条竖线和两条直线和右面的同样, 如果我发现了这两个特征我就可以认为这是一个矩形。OK, 特征确定之后就是方法, 丁濛老师打算用SVM训练, 由于我接触机器学习的时间只有半年, 所以在实现的时候遇到了很大的麻烦, 用痛不欲生完全可以形容我现在的感受。
首先我下的是3.2版本的opencv, 很多库函数文件有了非常大的改动, 这就很麻烦。 opencv3.2也是因为刚刚出, 很多资料不是很全, 想上网查相关文档就很麻烦, 所以我经常是通过看别人的代码然后推出来的, 很痛苦。
现在进度是把编译错误解决了, 但是很多运行错误, 很气, 打算再去多找几遍丁濛老师, 厚着脸皮吧。
第一阶段的目标是在一张图片中识别高为一行字的高度的矩形