学习笔记(04):一学即懂的计算机视觉(第一季)-图像表示描述实战演练

立即学习:https://edu.csdn.net/course/play/26281/327095?utm_source=blogtoedu

图像描述

 

import numpy as np
import cv2
import copy

 

img=cv2.imread(r'C:\Users\c\Pictures\test.jpg')
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

#去噪声
kernel=cv2.getStructuringElement(cv2.MORPH_CROSS,(3,3))
gray=cv2.morphologyEx(gray,cv2.MORPH_OPEN,kernel)
gray=cv2.morphologyEx(gray,cv2.MORPH_CLOSE,kernel)

thr,bw=cv2.threshold(gray,1,255,cv2.THRESH_BINARY)#thr阈值,bw处理后图像
cv2.imshow('Source',img)
cv2.imshow('Threshold',bw)
cv2.waitKey()
cv2.destroyAllWindows()
#图像轮廓
cnts,hier=cv2.findContours(bw,cv2.RETR_LIST,cv2.CHAIN_APPROX_NONE)


disp_poly=img.copy()
disp_elli=img.copy()
for i in range(len(cnts)):
    c=cnts[i]       #轮廓提取
    poly=cv2.approxPolyDP(c,5,True)#外接矩形拟合,5代表允许误差大小,1,几乎看不出折线
    cv2.polylines(disp_poly,[poly],True,(255,255,255),2)  #画出外接矩形


    #拟合椭圆
    if(len(c)>5):
        ellipse=cv2.fitEllipse(c)
        cv2.ellipse(disp_elli,ellipse,(255,255,255),2)

    area=cv2.contourArea(c)#面积计算
    length=cv2.arcLength(c,True)
    moments=cv2.moments(c)#普通距的计算
    hu=cv2.HuMoments(moments)#计算Hu不变矩
    print(i+1,' : ','length=%.1f'%length,'area=',area,
     'm00=%.3f,m01=%.3f,m10=%.3f,m11=%.3f'%(hu[0],hu[1],hu[2],hu[3]))
#得到对应区域包围框,并在左上角限时序号
    x,y,w,h=cv2.boundingRect(c)
    cv2.putText(disp_poly,str(i+1),(x,y),cv2.FONT_HERSHEY_PLAIN,0.8,(0xff,0xff,0xff))
cv2.imshow('poly',disp_poly)
cv2.imshow('elli',disp_elli)
cv2.waitKey()
cv2.destroyAllWindows()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值