Opencv基础自学二十六(剔除杂点)

import cv2
import numpy as np

src = cv2.imread(r"D:/example/b.png")
gray=cv2.cvtColor(src,cv2.COLOR_BGR2GRAY)#转灰度
#cv2.imshow("gray",gray)
canny1 = cv2.Canny(gray,100, 150)#滤镜
cv2.imwrite('Y:/cv_canny.jpg', canny1)#保存

_, labels, stats, centroids = cv2.connectedComponentsWithStats(canny1)#connectedComponentsWithStats
print(centroids)# 每个域的质心坐标
print("stats", stats)
for istat in stats[1:]:#0是默认的图片大小,所以从1开始
   if istat[4] <100:#如果面积小于100,被认为是干扰,剔除
      #print('istat[4]',istat[4])
      # print(istat[0:2])
      # if istat[3] > istat[4]:
      #  r = istat[3]
      # else:
      #  r = istat[4]
      cv2.rectangle(canny1, tuple(istat[0:2]), tuple(istat[0:2] + istat[2:4]), 0, thickness=-1)  # 画矩阵,厚度是-1,间接用方法提出

#connectedComponentsWithStats 计算连通域的面积,主要用到第三个参数 stats
#主要是输出stats,是个列表,分别是/连通域的boundingbox的最左边,连通域的boundingbox的最上边,宽,高,面积
#杂点的宽和高不一定是宽*高=面积,

cv2.imwrite('Y:/cv_after.png', canny1)
cv2.waitKey(0)#如果x=0,则无限等待下去,直到有按键按下
cv2.destroyAllWindows()#为了能正常关闭所有的绘图窗口

 

原图效果

 

剔除效果

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值