OpenCV中几何形状识别与测量

OpenCV (C++) 几何形状识别(面积过滤、横纵比过滤等等)

#include <opencv2/opencv.hpp>
#include <iostream>#define MATCHMETHOD TM_SQDIFF_NORMED//宏定义匹配模式
using namespace cv;
using namespace std;int main(int argc, char** argv)
{Mat src = imread("001.png");Mat src_gray, binary;Mat Triangle = src.clone(), Rect = src.clone(), BigCircle = src.clone(), SmallCircle = src.clone();if (src.empty()) {printf("Could not load image...");return -1;}imshow("Input Image", src);//二值化cvtColor(src, src_gray, COLOR_BGR2GRAY);threshold(src_gray, binary, 0, 255, THRESH_BINARY | THRESH_OTSU);binary = ~binary;imshow("binary", binary);//发现轮廓vector<vector<Point>> contours;vector<Point> point;vector<Vec4i> hireachy;findContours(binary, contours, hireachy, RETR_TREE, CHAIN_APPROX_SIMPLE, Point());//绘制出所有轮廓for (size_t t = 0; t < contours.size(); t++){int epsilon = 0.01 * arcLength(contours[t], true);approxPolyDP(contours[t], point, epsilon, true);if (point.size() == 3){drawContours(Triangle, contours, t, Scalar(0, 0, 255), 2, 8, Mat(), 0, Point());//dst必须先初始化 }else if (point.size() == 4){drawContours(Rect, contours, t, Scalar(0, 0, 255), 2, 8, Mat(), 0, Point());//dst必须先初始化}else{double area = contourArea(contours[t]);if (area < 15000){drawContours(SmallCircle, contours, t, Scalar(0, 0, 255), 2, 8, Mat(), 0, Point());//dst必须先初始化}else{drawContours(BigCircle, contours, t, Scalar(0, 0, 255), 2, 8, Mat(), 0, Point());//dst必须先初始化}}cout << "边的数目:" << point.size() << endl;}imshow("Triangle", Triangle);imshow("BigCircle", BigCircle);imshow("Rect", Rect);imshow("SmallCircle", SmallCircle);waitKey(0);return 0;
}

函数详解

轮廓提取findContours和绘制drawContours

OpenCV轮廓vectorvector,vector,vector,vector

OpenCV识别形状相关推荐

  1. 基于OpenCV的形状检测

    摘要 点击此处下载源代码:https://jbox.sjtu.edu.cn/l/85O9ur 本教程是我们关于形状检测和分析的三部分系列文章的第二篇. 上周我们学习了如何使用OpenCV计算轮廓的中心 ...

  2. OpenCV 识别图片中的米粒个数,并计算米粒的平均面积和长度(转)

    介绍 OpenCV+Python 使用OpenCV构建图像识别算法,识别图片中的米粒个数,并计算米粒的平均面积和长度 软件架构 模块:OpenCV 4.0.0.21 编程语言:Python 3.7.2 ...

  3. OpenCV 识别图片中的米粒个数,并计算米粒的平均面积和长度

    介绍 OpenCV+Python 使用OpenCV构建图像识别算法,识别图片中的米粒个数,并计算米粒的平均面积和长度 软件架构 模块:OpenCV 4.0.0.21 编程语言:Python 3.7.2 ...

  4. opencv-python 人脸检测,边缘检测,识别形状,图像分割,OCR,OMR,验证码识别,二维码识别,行人检测等应用解决思路

    opencv-python作为经典的计算机视觉,图片处理平台,可以用来开发很多基础应用,关于opencv-python里边函数的应用小结如下,欢迎讨论: 人脸检测 一般用 haarCascade 车牌 ...

  5. 转载:使用 OpenCV 识别 QRCode

    原文链接:http://coolshell.cn/articles/10590.html#jtss-tsina 识别二维码的项目数不胜数,每次都是开箱即用,方便得很. 这次想用 OpenCV 从零识别 ...

  6. opencv resize_利用OpenCV 识别两张相似的图片

    Background: 在我们项目中,用到U-net,我们对训练样本图片使用labelme进行标定,对标定生成的json文件labelme_json_to_dataset生成标注图像,由于小伙伴将生成 ...

  7. opencv 取roi_利用OpenCV 识别两张相似的图片

    Background: 在我们项目中,用到U-net,我们对训练样本图片使用labelme进行标定,对标定生成的json文件labelme_json_to_dataset生成标注图像,由于小伙伴将生成 ...

  8. c++ 解析从浏览器端传过来的图像base64编码,并转换成opencv识别的格式

    from: c++ 解析从浏览器端传过来的图像base64编码,并转换成opencv识别的格式 #include <cstdint> #include <fstream> #i ...

  9. python相似图片识别_Python+Opencv识别两张相似图片

    Python+Opencv识别两张相似图片 在网上看到python做图像识别的相关文章后,真心感觉python的功能实在太强大,因此将这些文章总结一下,建立一下自己的知识体系. 当然了,图像识别这个话 ...

最新文章

  1. c语言 石头剪刀布的小程序,C语言小程序(七)、石头剪刀布
  2. Axis 实现的SOAP附件的传输
  3. Mybatis实现分库分表
  4. xcode常用快捷键_Mac及Xcode常用快捷键
  5. python3纵向输出字符串_Python 3.x 格式化输出字符串 % format 笔记
  6. 写在 2019 年后的蚂蚁、头条、拼多多的面试总结
  7. 小米盗图迪丽热巴?公关经理:占位示意 不存在故意盗图!
  8. of介词短语作定语_介词短语用作状语/定语/表语/复合宾语
  9. Android嵌套滑动冲突
  10. python软件下载安装-python安装最新下载_python安装绿色版 - 软件帝
  11. 用C#代码实现求两条线段的交点并判断各种情况
  12. Atitit 软件国际化原理与概论
  13. UG NX 12零件工程图基础
  14. 计算机房维修保养记录表,机房设备系统运行及维护记录学习表格.docx
  15. MacOS 制作 Linux U盘启动盘
  16. 测试案例(五个案例)
  17. 从人物的名字看香港电影人的文化底蕴
  18. 【资源】Oculus meta Quest 2游戏下载VR一体机游戏资源合集下载教程Pro
  19. 凡走过必留下痕迹|2019年个人总结
  20. 可视化随笔 阶梯图

热门文章

  1. 【图论】图,实现图(三种方式),二分图 详解
  2. 数据库基础笔记(MySQL)7 —— 存储引擎和视图 ( 完结撒花 )
  3. poj3686(最小费用流)
  4. python文件读写_python文件操作-读写删除复制总结
  5. C++ STL中的优先队列(priority_queue)使用
  6. springmvc + springboot + mybatis java b2b2c电子商城系统源码...
  7. python之路---进程
  8. ORM表之间的多对多处理
  9. 基于ZooKeeper的Hadoop HA集群搭建
  10. Vue2 源码漫游(二)