图形识别也可以理解为轮廓识别。轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度。

(1)为了更加准确,要使用二值化图像

(2)在寻找轮廓之前,要进行阈值化处理或者 Canny 边界检测

(3)绘制轮廓

(4)轮廓的近似

(5)查找轮廓的不同特征 ①角点数 ②面积

通过检测角点来判定是什么形状,当角点无数多时认为为圆形。

当然此思路不适合做复杂环境下的图像检测容易误判,在识别特殊规则的图形比较准确,还有待改进。如有不足,感谢指出。

import cv2 as cv
import numpy as np
global a
class ShapeAnalysis:def __init__(self):self.shapes = {'three': 0, 'four': 0, 'five':0, 'six': 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)#函数cv.findContours有三个参数,第一个是输入图像,第二个是轮廓检索模式,第三个是轮廓近似方法out_binary, contours, hierarchy = cv.findContours(binary, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)#shape数组为面积范围areas = np.zeros(shape=[1, 7000])areaj = np.zeros(shape=[1, 7000])aread = np.zeros(shape=[1, 7000])areaw = np.zeros(shape=[1, 7000])areal = np.zeros(shape=[1, 7000])areayuan = np.zeros(shape=[1, 7000])i = 1global afor cnt in range(len(contours)):# 提取与绘制轮廓cv.drawContours(result, contours, cnt, (0, 255, 0), 2)# 轮廓逼近#epsilon,它是从原始轮廓到近似轮廓的最大距离。它是一个准确度参数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['three']count = count+1self.shapes['three'] = count#shape_type = "三角形"area_3 = cv.contourArea(contours[cnt])areas[0, i] = area_3if corners == 4:count = self.shapes['four']count = count + 1self.shapes['four'] = count#shape_type = "four形"area_4 = cv.contourArea(contours[cnt])areaj[0, i] = area_4if corners == 5:count = self.shapes['five']count = count + 1self.shapes['five'] = count#shape_type = "five形"area_5 = cv.contourArea(contours[cnt])areaw[0, i] = area_5#if corners == 6:#     count = self.shapes['six']#    count = count + 1#    self.shapes['six'] = count#   #shape_type = "six形"#    area_6 = cv.contourArea(contours[cnt])#    areal[0, i] = area_6if corners >= 50:count = self.shapes['circles']count = count + 1self.shapes['circles'] = count#shape_type = "圆形"area_y = cv.contourArea(contours[cnt])areayuan[0, i] = area_yi = i + 1area_S = areas.max()area_J = areaj.max()area_Y = areayuan.max()area_D = aread.max()area_W = areaw.max()area_L = areal.max()shape_types = "T"  #三角形shape_typej = "F"  #矩形shape_typey = "Y"  #圆形shape_typew = "F"  #five形shape_typel = "S"  #six形if area_S >5000:a = shape_typesif area_J >5000:a = shape_typejif area_Y >5000:a = shape_typeyif area_W>5000:a = shape_typewif area_L >5000:a = shape_typelreturn self.shapesif __name__ == "__main__":cap = cv.VideoCapture(0)success, img = cap.read()cv.imshow('frame',img)cv.imwrite("/home/car/AI_match/4.jpg", img)src = cv.imread("/home/car/AI_match/4.jpg")ld = ShapeAnalysis()ld.analysis(src)print(a)# cv.waitKey(0)#  cv.destroyAllWindows()

图像数据流识别圆形_人工智能大赛视觉处理(一)图形识别相关推荐

  1. 人脸识别接口_人工智能 人脸识别双目模组摄像头 活体检测的重要作用

    人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术.用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部识别的一系列相关技术,通常也叫做人像 ...

  2. (数理方程)Matlab模拟琴弦振动发声并显示振动图像(matlab)_人工智能

    1. 物理模型建立 由课题问题可转化为实际数理问题,即典型弦振动问题,一根均匀弦两端分别在x=0以及x=L处固定,设初始速度为零,初始时刻弦的形状为一抛物线,抛物线的顶点为(L/2,h),讨论其弦振动 ...

  3. python图像缺陷识别算法_利用python-OpenCV对成像有瑕疵的图片进行检测

    任务 利用路由器将海康工业相机成像传递给工控机的过程中,部分图像出现成行的绿线,如下图所示,用python-OpenCV进行处理,追求在最短的时间内检测出有瑕疵的图片进行排除. 图1 使用halcon ...

  4. 智能ai深度学习技术_人工智能深度学习与医学

    智能ai深度学习技术 As physicians, nurses, dentists, or any healthcare expert, we all have experienced the ea ...

  5. 挑战杯大赛优秀作品示例_图像分类比赛tricks:华为云人工智能大赛·垃圾分类挑战杯...

    所有代码以上传至github: garbage_classify​github.com 已修改成本地可以运行. 修改方法: 1.save_model.py|train.py|eval.py|run.p ...

  6. 全国人工智能大赛 行人重识别(Person ReID)赛项 季军团队方案分享

    全国人工智能大赛-行人重识别(Person ReID)赛项-季军团队由5名博士生组成,该次比赛初赛和复赛阶段的代码后续将整理开源,敬请期待! 团队名称:DMT 团队成员: 罗浩.何淑婷. 古有志. 王 ...

  7. 重磅!总奖池536万,首届“全国人工智能大赛”(AI+4K HDR 视频 与 行人重识别)...

    点击我爱计算机视觉标星,更快获取CVML新技术 一.赛事背景 2019年8月,深圳市人民政府决定专门设立人工智能领域权威赛事--全国人工智能大赛(以下简称大赛).大赛将立足国际视野,营造人工智能创新创 ...

  8. 外点罚函数matlab程序_关于图像轮廓识别的程序实现

    首先声明一下,本文C语言程序部分不明白可以略过,而且知乎图片清晰度不高,代码部分看不清,主要理解思想就可以了: 毕业设计遇到一个难题,需要求解日本导航卫星在亚太地区可视性范围,需求解一天内24小时可视 ...

  9. 阿里云天池 - 2018之江杯全球人工智能大赛 之零样本图像目标识别 参赛总结

    9月份报名做了 2018之江杯全球人工智能大赛 之零样本图像目标识别 的这道题 -     题目链接-https://tianchi.aliyun.com/competition/entrance/2 ...

最新文章

  1. Testing tools
  2. 财务学习mysql_从零开始学 MySQL - 前言
  3. iOS8新特性之交互式通知
  4. 使用scikit-learn进行机器学习的简易教程
  5. getFilterFromRunTimeService - what is the trigger point of data load
  6. 3D Reconstruction三维重建halcon算子,持续更新
  7. SystemTray.cpp
  8. html datatype自定义,$.ajax中dataType为html实现地区显示效果
  9. 好的技术文章应该让读者更自信而不是更自卑
  10. 美团NLP实习生招聘
  11. 鸿蒙有什么好处,鸿蒙系统有什么好处-鸿蒙系统有什么用-鸿蒙系统有什么区别...
  12. 蓝桥杯省赛2013年Java组B组
  13. OFFICE技术讲座:连续内容分断的规则
  14. Zener二极管(稳压二极管)型号对照表--1N52xx系列
  15. 利用“微PE”自制PE可引导iso
  16. 弱监督学习综述-周志华(ML论文阅读笔记1)
  17. c语言求阶乘和的流程图_C语言:数据结构-栈与递归
  18. 2017服务器cpu性能排行,桌面CPU性能排行榜单 CPU天梯图2017年6月最新版
  19. win10 下Adobe Reader XI闪退问题解决
  20. 一个使用 selenium 模块爬取(Twitter、New York Times)网站的可配置爬虫代码

热门文章

  1. 【编程】char unsigned int float double long 字节数
  2. Opencv 配置VS2012
  3. [云炬创业学笔记]第一章创业是什么测试4
  4. [云炬创业基础笔记]第七张创业团队测试6
  5. 科大星云诗社动态20210521
  6. 今天遭遇了同样的坑,折腾了一上午
  7. Coursera吴恩达《卷积神经网络》课程笔记(4)-- 人脸识别与神经风格迁移
  8. 让delphi2010操作界面回到delphi7模式
  9. 库函数、系统调用和内核函数的区别
  10. BugkuCTF-Misc:隐写3