预处理方案设计
- 功能介绍(作为摄像头功能的重要延伸)
- 读入摄像头识别后的Mat图像;
- 进行图像像素的缩放,除去一部分无用和易产生干扰的坐标点;
- 对图像进行平滑滤波处理,减小干扰点毛刺等问题;
- 返回Point2i类型的容器,补充摄像头识别功能,为识别做准备.
- 思路分析
- 调用pyrDown()函数,删除一部分无关点;
- 调用pyrUp()恢复至原始图片的尺寸,协同步骤1可以减小坐标点的数量,提高运算效率;
- 调用blur()函数使图像更加平滑;
- 调用findContours()函数,获得外框的一系列坐标点(存入vector中);
- 返回装有坐标点的容器.
- 代码介绍
bool pretreat_record(cv::Mat src , std::vector<cv::Point2i> &ptdata)
{
using namespace cv;
using namespace std;
Mat dst_t,dst;
vector<vector<Point>> contour;
vector<Vec4i> hie;
cvtColor(src, src, COLOR_BGR2GRAY);
pyrDown(src, dst_t, Size(src.cols/2, src.rows/2));
pyrUp(dst_t, dst, src.size());
blur(dst,dst,Size(9,9));
imshow("dst",dst);
findContours(dst, contour, hie, CV_RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
ptdata = contour[0];
contour.clear();
hie.clear();
return true;
}
- 待改进问题
- 实际测试过程中易出现检测过程产生不完全封闭图像的情况,干扰后续判断.