前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenCV在地图测试上的应用

OpenCV在地图测试上的应用

作者头像
用户5521279
发布2020-04-15 17:59:07
1.4K0
发布2020-04-15 17:59:07
举报
文章被收录于专栏:搜狗测试

前言

我们在以往的UI自动化测试中,可以通过获取页面元素进行封装组合成一系列模拟真人的操作,来完成UI方面的自动化测试,但是在地图业务测试中,这种方式是无法完成的,地图是无法通过普通元素定位手段是无法获取元素的,比如完成对比新老版本路径规划的准确性、与竞品比较路线的成熟度,但通过图像识别也是一个不错的思路,今天我们介绍一下利用图像识别的方式,在地图测试做一些应用。下面我们介绍今天的主角——OpenCV

OpenCV(Open Source Computer Vision Library)是一个使用 C/C++ 开发的开源的跨平台的计算机视觉库,它提供了很多函数,这些函数非常高效地实现了计算机视觉算法,同时也提供了 Python、Java、MATLAB 等其他语言的接口。OpenCV 的应用领域非常广泛,包括图像拼接、图像降噪、产品质检、人机交互、人脸识别、动作识别、动作跟踪、无人驾驶等。OpenCV 还提供了机器学习模块,你可以使用正态贝叶斯、K最近邻、支持向量机、决策树、随机森林、人工神经网络等机器学习算法。

一、安装和工程搭建不多介绍,注意安装以下模块和工具

GTK+ 2.x 或者更高的版本;

GCC 编译器;

cmake 构建工具;

libtbb(英特尔线程构建模块)

Python3

二、图像写入和读取

图像处理依赖于得到一幅图像、视频,并通过应用信号处理技术的“播放”来得到预期的结果,我们写入两张路线规划图片。

OpenCV 支持的主要图像格式有:

Windowsbitmaps(*.bmp、*dib);

Portableimage formats(*.pbm、*.pgm、*.ppm);

Sunrasters(*.sr、*.ras);

需要辅助库的格式有:

JPEG(*.jpeg、*.jpg、*.jpe);

JPEG 2000(*.jp2);

Portable Network Graphics(*.png);

TIFF(*.tiff、*.tif);

WebP(*.webp);

三、相似度对比方法

OpenCV相似度对比有几种方法:

1.直方图对比法

2. 图像模板匹配

3. PSNR峰值信噪比

4.SSIM(structural similarity)结构相似性

5、感知哈希算法

四、实现步骤:

1)两个版本的地图做起止点路线规划,截图保存,从本地读取两张图像

代码语言:javascript
复制
bool compareLineByHist(Mat img,Mat orgImg){
    Mat tmpImg;
    resize(img, tmpImg, Size(orgImg.cols, orgImg.rows));
    imshow("Img1", img);
    imshow("tmpImg", tmpImg);
    imshow("orgImg", orgImg);

2)将两张图像进行H色调、S饱和度、V亮度格式转换

代码语言:javascript
复制
	cvtColor(tmpImg, tmpImg, COLOR_BGR2HSV); 
  cvtColor(orgImg, orgImg, COLOR_BGR2HSV);

3)构建图像的直方图模型,并进行直方图归一化

代码语言:javascript
复制
	int hBins = 256, sBins = 256; 
  int histSize[] = { hBins,sBins };
	float hRanges[] = { 0,180 };

4)比较两张图片的直方图模型,计算图片的直方图相似度

代码语言:javascript
复制
    float sRanges[] = { 0,255 };

    const float* ranges[] = { hRanges,sRanges };

    int channels[] = { 0,1 };//二维直方图

    MatND hist1, hist2;

    calcHist(&tmpImg, 1, channels, Mat(), hist1,2,histSize, ranges, true, false);
    normalize(hist1, hist1, 0, 1, NORM_MINMAX, -1, Mat());
    calcHist(&orgImg, 1, channels, Mat(), hist2, 2, histSize, ranges, true, false);
    normalize(hist2, hist2, 0, 1, NORM_MINMAX, -1, Mat());
    double similarityValue = compareHist(hist1, hist2, CV_COMP_CORREL);
    cout << "相似度:" << similarityValue << endl;
    if (similarityValue >= 0.85)                0.85为阈值
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 搜狗测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档