opencv识别不同形状

基本思路:将图片转化为灰度图后,过滤出边缘,并识别顶点,通过统计顶点的个数来判断形状


path="./images/shape.png"
img=cv.imread(path,0)##0--读入灰度图片,1--读入一副彩色图片,忽略alpha通道,-1----读入完整图片,包括alpha通道
imgContour=img.copy()

过滤出边缘


canny_img=cv.Canny(img,120,250)#参数根据情况调整

识别图片中形状的边缘


contours,hierachy=cv.findContours(canny_img,mode=cv.RETR_EXTERNAL,method=cv.CHAIN_APPROX_NONE)

根据顶点数输出形状


for cnt in contours:
    cv.drawContours(imgContour,cnt,-1,(255,0,0),4)##画出外边框
    area=cv.contourArea(cnt)
    if area>500:
        #计算边长
        peri=cv.arcLength(cnt,True)
        #用多边形近似图片中的图像
        vertices = cv.approxPolyDP(cnt,peri *0.02,True)##输出近似图像折点的坐标
        
        corners = len(vertices)
        x,y,w,h=cv.boundingRect(vertices)#一个图像的最小矩形边框,画把图形圈起来的正方形
        cv.rectangle(imgContour,(x,y),(x+w,y+w),(0,255,0),4)
        
        if corners == 3 :
            cv.putText(imgContour,'triangle',(x,y-5),cv.FONT_HERSHEY_SIMPLEX,1,(0,0,255),2)
        elif corners == 4 :
            cv.putText(imgContour,'rectangle',(x,y-5),cv.FONT_HERSHEY_SIMPLEX,1,(0,0,255),2)
        elif corners == 5 :
            cv.putText(imgContour,'pentage',(x,y-5),cv.FONT_HERSHEY_SIMPLEX,1,(0,0,255),2)
        elif corners >5 :
            cv.putText(imgContour,'circle',(x,y-5),cv.FONT_HERSHEY_SIMPLEX,1,(0,0,255),2)

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: c是英文字母表中的第三个字母。c的发音是 /siː/,与字母a、b有一些不同。c通常被用于拼写单词和组成句子。c也可以作为罗马数字中的“100”,并在各种测量单位中表示“厘米”。在计算机科学中,c是一种编程语言,用于开发软件和创建应用程序。c还代表一些其他概念,例如:C型钳和C大调音阶。总的来说,c是英语字母表中常用的字母之一,在语言、数学、科学和技术等领域有着广泛的应用。 ### 回答2: C是计算机科学中的一种编程语言。C语言于1972年由贝尔实验室的丹尼斯·里奇开发出来,主要用于编写操作系统。由于其简洁、高效和强大的功能,C语言很快成为了程序员们的首选语言之一。 C语言在计算机科学领域扮演着重要的角色。它提供了底层的编程控制,允许程序员使用指针和内存地址等底层操作。这使得C语言非常适合于编写高效的系统级和嵌入式软件。许多操作系统和嵌入式设备的核心代码都是用C语言编写的。 另外,C语言也是学习其他高级编程语言的基础。许多高级语言,如C++和Java,都是在C语言的基础上发展起来的。因此,掌握C语言有助于理解其他编程语言的工作原理。 C语言的语法相对简单,易于学习和理解。它使用结构化的编程方式,强调模块化和代码的重用性。这使得C语言具有更好的可读性和可维护性,并且适合于大型项目的开发。 除了在计算机科学领域广泛应用外,C语言还被用于编写流行的应用软件和游戏。例如,著名的操作系统Linux的内核就是使用C语言编写的。另外,许多游戏开发工具和引擎也使用C语言作为其主要的编程语言。 总之,C语言是一种重要且广泛应用于计算机科学领域的编程语言。掌握C语言对于理解计算机的底层原理、学习其他高级编程语言以及开发各种软件和游戏都非常有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值