opencv——识别A4纸
Posted share space
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv——识别A4纸相关的知识,希望对你有一定的参考价值。
小编这篇给大家带来的是如何用opencv在视野中识别出A4纸或者是某一个具体的靶标什么的,同样的算法改改可以用来识别其他的形状的物体,先来看看实际的效果:
由于小编是在虚拟机下调用摄像头出现了一些问题,还没有试试连续过程中的识别情况,等摄像头到了,小编会再后续中测试。
在程序开始之前我们先梳理一下解决这个问题的流程:
1、图像预处理(这里考虑到处理速度问题采用的是高斯滤波)
2、边缘检测(本文采用的canny算子)
3、膨胀(尽量使边缘闭合)
4、寻找A4边框(采用的是findContours算法)
5、对findContours识别出来的轮廓进行排除得到我们需要的轮廓,这是最为核心的一步。譬如本文是筛选类似A4纸书本这样的框,采用的方法是先对得到的轮廓进行凸包拟合,然后以四边形和每个夹角大于60作为这样的一个初步筛选。然后从筛选出来的轮廓中选择最大的那个就是我们想要的了。(注:由于本文是一个demo,筛选条件比较简单,读者结合自己的应用常见和识别对象可以利用譬如直方图统计这样的增加筛选成功率)
6、得到满足筛选条件的最大轮廓的四个顶点(方便后面做透视校正,小编会在后面陆续写出分享)
7、绘出我们的轮廓
下面给出具体代码,有以问的欢迎留言交流:
#include <QCoreApplication>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp> //图像处理头文件
#include <cv.h>
#include <highgui.h>
#include <iostream>
using namespace cv;
using namespace std;
以上是关于opencv——识别A4纸的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 OpenCV 3 训练 SVM 以识别“欧元”硬币?