CV:cv2实现检测几何形状并进行识别、输出周长、面积、颜色、形状类型

目录

输出结果

实现代码


输出结果


实现代码

# -*- coding: utf-8 -*-#OpenCV实现检测几何形状并进行识别、输出周长、面积、颜色、形状类型——Jason niu
import cv2 as cv
import numpy as npclass ShapeAnalysis:  #定义形状分析的类def __init__(self):self.shapes = {'triangle': 0, 'rectangle': 0, 'polygons': 0, 'circles': 0}def analysis(self, frame):h, w, ch = frame.shaperesult = np.zeros((h, w, ch), dtype=np.uint8)# 二值化图像print("start to detect lines...\n")gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)cv.imshow("input image", frame)out_binary, contours, hierarchy = cv.findContours(binary, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)for cnt in range(len(contours)):# 提取与绘制轮廓cv.drawContours(result, contours, cnt, (0, 255, 0), 2)# 轮廓逼近epsilon = 0.01 * cv.arcLength(contours[cnt], True)approx = cv.approxPolyDP(contours[cnt], epsilon, True)# 分析几何形状corners = len(approx)shape_type = ""if corners == 3:count = self.shapes['triangle']count = count+1self.shapes['triangle'] = countshape_type = "三角形"if corners == 4:count = self.shapes['rectangle']count = count + 1self.shapes['rectangle'] = countshape_type = "矩形"if corners >= 10:count = self.shapes['circles']count = count + 1self.shapes['circles'] = countshape_type = "圆形"if 4 < corners < 10:count = self.shapes['polygons']count = count + 1self.shapes['polygons'] = countshape_type = "多边形"# 求解中心位置mm = cv.moments(contours[cnt])cx = int(mm['m10'] / mm['m00'])cy = int(mm['m01'] / mm['m00'])cv.circle(result, (cx, cy), 3, (0, 0, 255), -1)# 颜色分析和提取color = frame[cy][cx]color_str = "(" + str(color[0]) + ", " + str(color[1]) + ", " + str(color[2]) + ")"# 计算面积与周长p = cv.arcLength(contours[cnt], True)area = cv.contourArea(contours[cnt])print("周长: %.3f, 面积: %.3f 颜色: %s 形状: %s "% (p, area, color_str, shape_type))cv.imshow("Analysis Result", self.draw_text_info(result))return self.shapes
if __name__ == "__main__":src = cv.imread("F:/File_Python/Resources/004.png")ld = ShapeAnalysis()ld.analysis(src)cv.waitKey(0)cv.destroyAllWindows()

CV:cv2实现检测几何形状并进行识别、输出周长、面积、颜色、形状类型相关推荐

  1. python图像处理-形状提取和识别1(基于Hough的形状提取)

    python图像处理-形状提取和识别1 (基于Hough的形状提取) 本系列一个分为两大部分:一个是形状提取,一个是形状识别 1.形状提取中,基于Hough函数法进行直线提取和圆形提取,还有即基于颜色 ...

  2. 【论文笔记2】基于梯形面积估计的大规模网络异常检测几何面积分析新技术

    Novel Geometric Area Analysis Technique for Anomaly Detection Using Trapezoidal Area Estimation on L ...

  3. OpenCV使用cv :: CascadeClassifier类检测视频流中的对象的实例(附完整代码)

    Open使用cv :: CascadeClassifier类检测视频流中的对象的实例 OpenCV使用cv :: CascadeClassifier类检测视频流中的对象的实例 OpenCV使用cv : ...

  4. OpenCV cv::CascadeClassifier人脸检测的实例(附完整代码)

    OpenCV cv::CascadeClassifier人脸检测的实例 OpenCV cv::CascadeClassifier人脸检测的实例 OpenCV cv::CascadeClassifier ...

  5. 基于Python的(拍照签到+网课在线检测)深度学习的人脸识别系统

    摘 要 近年来,网络技术日新月异,我们已经进入了大数据的时代并成为其中第一员,由此带来数据量的飞跃式的增长,而如何利用这些数据产生实际的生产价值则成为了大数据时代的一个重要问题.而人脸识别技术是一份对 ...

  6. CVPR 2020几篇论文内容点评:目标检测跟踪,人脸表情识别,姿态估计,实例分割等

    CVPR 2020几篇论文内容点评:目标检测跟踪,人脸表情识别,姿态估计,实例分割等 CVPR 2020中选论文放榜后,最新开源项目合集也来了. 本届CPVR共接收6656篇论文,中选1470篇,&q ...

  7. CV之API:利用Face++的人体识别接口,实现摄像头实时手势识别

    CV之API:利用Face++的人体识别接口,实现摄像头实时手势识别 目录 测试图片 实现代码(部分) 测试图片 实现代码(部分) #利用Face++的人体识别接口,实现摄像头实时手势识别 impor ...

  8. CV之FRec之ME/LF:人脸识别中常用的模型评估指标/损失函数(Triplet Loss、Center Loss)简介、使用方法之详细攻略

    CV之FRec之ME/LF:人脸识别中常用的模型评估指标/损失函数(Triplet Loss.Center Loss)简介.使用方法之详细攻略 目录 T1.Triplet Loss 1.英文原文解释 ...

  9. python人脸检测代码_python实现人脸识别代码

    从实时视频流中识别出人脸区域,从原理上看,其依然属于机器学习的领域之一,本质上与谷歌利用深度学习识别出猫没有什么区别.程序通过大量的人脸图片数据进行训练,利用数学算法建立建立可靠的人脸特征模型,如此即 ...

最新文章

  1. ORA-00845 : MEMORY_TARGET not supported on this system(调大数据库内存无法启动)
  2. 源码阅读心得11-13
  3. 多线程Java服务器简单实现
  4. wxWidgets:wxDialUpManager类用法
  5. 巴科斯范式BNF: Backus-Naur Form介绍
  6. mac 删除垃圾篓中的文件
  7. Android 系统(197)---USB VID
  8. 重庆大学微型计算机基础实验,计控课程方案设计书.doc
  9. 【博客项目】—登录功能实现( 四)
  10. POJ - 2891 中国剩余定理
  11. 华为s5700交换机使用配置
  12. 思科防火墙ASA5506X总是自动重启查看crash日志
  13. 一文62页PPT读懂中国供应链金融
  14. Python 各种画图
  15. 天线工程手册_弱电工程人员书籍推荐
  16. 利用.sym跨平台解析iOS符号
  17. Android 多厂商推送集成
  18. 让你彻底明白:HTTPS安全通信机制
  19. metasploit msfvenom与veil绕过杀毒软件
  20. saber与matlab,saber与matlab的比较 (1)

热门文章

  1. java发送html文件_Java生成HTML文件
  2. SpringBoot webmvc项目导出war包并在外部tomcat运行产生的诸多问题以及解决方案
  3. JS特效 -- 网页图片飞起来
  4. 非常有用的User case用例描述模板
  5. CentOs7中安装sonarQube服务系列------2.安装postgresSql数据库
  6. 并不是所有的 Github 项目写在简历上都加分
  7. Java8 HashMap源码分析
  8. jQuery-层次选择器的学习
  9. Java 洛谷 P1008 三连击
  10. 两个php的build文件,PHP编译安装中遇到的两个错误和解决方法