前言
识别图形
常用函数介绍

前言

OpenCV在图像处理与计算机视觉方面有很多通用算法。因此可以用来人脸识别、图形识别、文字识别等等。对于复杂一点识别的可能还涉及到大量的识别训练,最后的匹配比较分类等等。后续可能会介绍文字识别、人脸识别等等。

图形识别

图形识别指的是对常见的几何图形进行识别,它通过opencv进图形处理(二值化,图片灰度化,细化等等),获取图形轮廓特征,然后在应用几何图形特征去识别为几何图形。目前对于自己绘画几何图形并识别总的来说,如果特征找到的好,识别率还是挺高的。

  1. 直线绘画
  2. 曲线绘画

这两种划线方式对识别曲线来说,误差还是有点大,直线绘画起来没有因手抖动误差,这误差很容易影响到在图形识别处理中识别轮廓处理,从而影响到识别分类。

逻辑处理流程图

Created with Raphaël 2.2.0开始一张图片读取图片图片灰度化图片阈值化图片细化图片轮廓处理依据特征(圆度、凸包等等)确认几何图形图形结束

对于流程图不会的,可以借鉴这片网址与我的代码图。
参考网址:https://blog.csdn.net/cui130/article/details/84840984

st=>start: 开始
e=>end: 结束
io=>inputoutput:  一张图片
st->io
op=>operation:   读取图片
st->io->op
op1=>operation:  图片灰度化
st->io->op->op1
op2=>operation:  图片阈值化
st->io->op->op1->op2
op3=>operation: 图片细化
st->io->op->op1->op2->op3
op4=>operation:      图片轮廓处理
st->io->op->op1->op2->op3->op4
op5=>operation:    依据特征(圆度、凸包等等)确认几何图形
st->io->op->op1->op2->op3->op4->op5
io2=>inputoutput:  图形

常用函数介绍

  1. cvtColor(); 空间颜色转换
    void cv::cvtColor(cv::InputArray src, cv::OutputArray dst, int code,int dstCn = 0)。
    src: // 输入图
    dst: // 输出图
    code : // 颜色映射类型,可以查表得到,有很多
    dstCn: // 输出的通道数 (0=‘automatic’),我们可以使用默认值,什么都不写
    参考网址:https://blog.csdn.net/liubing8609/article/details/78461488

  2. threhold() 阈值化

    src:源图像,可以为8位的灰度图,也可以为32位的彩色图像。(两者由区别)
    dst:输出图像
    thresh:阈值
    maxval:dst图像中最大值
    type:阈值类型
    参考网址:https://blog.csdn.net/u012566751/article/details/77046445

  3. canny() 边缘检测算法

网址: https://www.cnblogs.com/pacino12134/p/9877971.html

  1. absdiff()
    void cvAbsDiff( const CvArr* src1, const CvArr* src2, CvArr* dst );  
    src1  第一个原数组  
    src2  第二个原数组  
    dst  输出数组  
    函数 cvAbsDiff 计算两个数组差的绝对值

  2. approxPolyDP( 多边形逼近)
    多边形逼近:
    void approxPolyDP(InputArray curve, OutputArray approxCurve, double epsilon, bool closed);
    参数说明:
    InputArray curve:输入的点集
    OutputArray approxCurve:输出的点集,当前点集是能最小包容指定点集的。draw出来即是一个多边形;
    double epsilon:指定的精度,也即是原始曲线与近似曲线之间的最大距离。
    bool closed:若为true,则说明近似曲线是闭合的,它的首位都是相连,反之,若为false,则断开。

  3. findContours函数 查找轮廓
    findContours( InputOutputArray image, OutputArrayOfArrays contours,
    OutputArray hierarchy, int mode,
    int method, Point offset=Point());
    参考网址:https://blog.csdn.net/dcrmg/article/details/51987348#

  4. convexHull() 函数 针对轮廓进行凸包计算
    void convexHull(InputArray points,OutputArray hull,bool clockwise = false,bool returnPoints = true)
    参数详解:
    InputArray points: 得到的点集,一般是用图像轮廓函数求得的轮廓点
    OutputArray hull: 输出的是凸包的二维xy点的坐标值,针对每一个轮廓形成的
    bool clockwise = false: 表示凸包的方向,顺时针或者逆时针
    bool returnPoint = true: 表示返回点还是点地址的索引

  5. arcLength() 函数 图像轮廓的周长
    double arcLength(InputArray curve, bool closed)
    参数详解:
    InputArray curve:表示图像的轮廓
    bool closed:表示轮廓是否封闭的

  6. contourArea()函数 轮廓面积
    double cv::contourArea ( InputArray contour, bool oriented = false )

contour:是一个向量,二维点,可以是vector或Mat类型
oriented:有默认值false,面向区域标识符,如果为true,该函数返回一个带符号的面积,其正负取决于轮廓的方向(顺时针还是逆时针)。根据这个特性可以根据面积的符号来确定轮廓的位置。如果是默认值false,则面积以绝对值的形式返回.

  1. pointPolygonTest()
    此功能可查找图像中的点与轮廓之间的最短距离. 当点在轮廓外时返回负值,当点在内部时返回正值,如果点在轮廓上则返回零.
    我们可以检查点(50,50)如下:
    dist = cv2.pointPolygonTest(cnt,(50,50),True)
    在函数中,第三个参数是measureDist。 如果为True,则查找签名距离. 如果为False,则查找该点是在内部还是外部或在轮廓上(它分别返回+1,-1,0)
    NOTE
    果您不想找到距离,请确保第三个参数为False,因为这是一个耗时的过程. 因此,将其设为False可提供2-3倍的加速.

  2. matchShapes() 形状匹配
    结果越低,匹配就越好
    功能:根据计算比较两张图像Hu不变距(函数返回值代表相似度大小,完全相同的图像返回值是0,返回值最大是1)
    double cvMatchShapes(const void* object1, const void* object2, int method, double parameter = 0);
    /*
    第一个参数是待匹配的物体1,第二个是待匹配的物体2
    第三个参数method有三种输入:
    CV_CONTOURS_MATCH_I1
    CV_CONTOURS_MATCH_I2
    CV_CONTOURS_MATCH_I3
    即三种不同的判定物体相似的方法
    第四个参数 Parameter 方法的具体参数(暂不支持)
    */
    参考网址:https://segmentfault.com/a/1190000015665320
    更多参考:https://blog.csdn.net/u013293580/article/details/83896844

如果在用python语言开发:
需要注意:
pip install imutils (图像操作库,缩放,旋转等等)
import cv
opecv在python中使用
https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv (在windows下的python 扩展包)
opencv_python‑3.4.6‑cp37‑cp37m‑win_amd64.whl

OpenCV识别图形以及常用函数处理相关推荐

  1. OPENCV数据结构体系和常用函数

    opencv设计了一些基础的数据类型和一些帮助的数据类型 基础数据类型 : 图像类 IplImage: 矩阵类 CvMat; 可变集合类:CvSeq CvSet CvGraph; 多维柱状图混合类:C ...

  2. c语言界面函数,C语言图形界面常用函数集锦

    (以下函数均应在图形方式初始之后使用(initgraph(a,b)),在win-tc中使用BGI图形程序模板时,其中已经定义有一个initgr函数,在main函数中应在执行initgr函数之后再使用这 ...

  3. OpenCV处理视频的常用函数

    对视频的处理分析,其本质上是由一帧帧的图像组成,所以视频处理最终还是要归结于图像处理,因此本文主要介绍OpenCV在处理视频时的一些基本函数. 一.视频帧的读取 OpenCV为视频的读入提供了一个类V ...

  4. matlab二维图形函数,在MATLAB中,画二维图形的常用函数为( )。

    [单选题]( )至今仍未走出困境,美欧与俄罗斯由此而展开的战略博弈也仍在持续. [多选题]信号跟踪的主要目的有: [判断题]You have the power to develop the sale ...

  5. OpenCV | OpenCv常用函数(代码类)

    博主github:https://github.com/MichaelBeechan 博主CSDN:https://blog.csdn.net/u011344545 俗语云:好记性不如烂笔头 //用到 ...

  6. python【Opencv计算机视觉库】opencv模块cv2常用函数用法(全)

    文章目录 CV2实践所用到的图片 1.简单读写 2.图片翻转 3.色彩变换 4.给图片加文本 5.绘图 6.图像的表示 CV2实践所用到的图片 bug.png 1.简单读写 import cv2# 读 ...

  7. 干货|219个opencv常用函数汇总

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者丨AmosLLc 来源丨新机器视觉      作者为CSDN博主「AmosLLc」 原文链接:https: ...

  8. 图形轨迹c语言,OpenCV识别图像上的线条轨迹

    如果图片上有线条,图形什么的,人的眼睛可以直接看出来,这是人的直接反应.那么如何让电脑识别呢? 图片在内存中是以二维矩阵的形式存储的,如果是彩图,则是GBR三通道,灰度图则是单通道.本教程用OpenC ...

  9. 【技术美术图形部分】2.3 HLSL常用函数

    --介绍HLSL常用函数,API的使用. 想要成为合格的技术美术,一定要具备Shader开发能力,满足性能的需求,无论是技术美术的哪一个方向,HLSL都是需要点满的技能点. 参考 微软官方HLSL库: ...

  10. OpenCV常用函数记载

    在实际经常用到OpenCV,这个库的函数多,功能强大,这篇博客主要用于记载自己在平时用到的一些OpenCV中的一些函数和方法.随时用到随时记载. 一.Mat类相关的操作 二.矩阵操作 1.opencv ...

最新文章

  1. c#_textbox显示刷新规定行数的数据
  2. 微信小程序中换行,空格(多个空格)写法
  3. 开箱即用——用模板快速生成《客户意见反馈表》
  4. BZOJ 4710: [Jsoi2011]分特产
  5. cass块参照怎么改颜色,【干货】新版本CASS符号颜色自定义详解
  6. 使用Java 8 CompletableFuture和Rx-Java Observable
  7. python 生成器_提高你的Python: 解释‘yield’和‘Generators(生成器)’
  8. [css] 手动写动画最小时间间隔是多少,为什么?
  9. c语言错误解析-变量声明
  10. koa-generator 快速生成 koa2 服务的脚手架工具
  11. 程序员真正的天赋是什么?
  12. 【转】Unity3D研究院之设置自动旋转屏幕默认旋转方向
  13. html页面中文乱码处理
  14. Java动态代理实现(转载\整理)
  15. 基于Zephyr在微型MCU上使用Tensor Flow Lite Micro做图像分类
  16. Java--对象的克隆
  17. 第九周 项目一--猴子选大王(数组版)
  18. 常用单片机和开发板的引脚功能图
  19. DevOps 小组运维管理手册
  20. 捋一捋Kafka中的消费者API

热门文章

  1. js拓扑图-vis插件
  2. 淘宝客淘宝联盟解析二合一链接获取优惠链接还原二合一,提取优惠信息
  3. 想转行学IT,到底要不要去培训机构?
  4. 硕士论文——页眉页脚设置
  5. 计算机一点桌面显示删除,电脑开机后任意点击桌面图标后不停出现删除文件窗口?...
  6. Pytorch是什么?Pytorch能用来干什么?
  7. 医院时钟系统(子母钟系统)构成及应用
  8. 开盘跳空是否透露超额收益?A股跳一跳因子挖掘
  9. 手机什么软件测试打字速度,有什么软件是测试打字速度的,介绍个给我啊
  10. echarts字体大小自适应