内容涉及:二值图像转换 / 检测连通区域面积 / 在原图上画框等

import cv2
import numpy as np for n in open('list.txt'): # list.txt为目标文件列表
path = n[:-1] # 去除文件路径的换行符
img = cv2.imread(path)
gray =cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 图像转灰度
ret, binary = cv2.threshold(gray, 75, 255, cv2.THRESH_BINARY) # 灰度转二值图像
cv2.imwrite(path + 'abc.png', binary)
kernel = np.ones((21,21),np.uint8) # 给图像闭运算定义核
kernel_1 = np.ones((101,101),np.uint8) # 给图像开运算定义核
# 图像先闭运算再开运算可以过滤孤立的物体, 将密集物体区域形成一片连通区
closing = cv2.morphologyEx(binary, cv2.MORPH_CLOSE, kernel)
opening = cv2.morphologyEx(closing, cv2.MORPH_OPEN, kernel_1)
# 给图像的边缘像素设定为255,否则下面连通区的检测无法识别贴在图像边缘的连通区
# 特别注意!!!,此操作会将整个图像也视为一个连通区域
opening_x = opening.shape[0]
opening_y = opening.shape[1]
opening[:,0] = 255
opening[:,opening_y-1] = 255
opening[0,:] = 255
opening[opening_x-1,:] = 255
# 检测图像连通区(输入为二值化图像)
image, contours, hierarchy = cv2.findContours(opening,1,2)
for n in range(len(contours)):
# 筛选面积较大的连通区,阈值为20000
cnt = contours[n]
area = cv2.contourArea(cnt)
if area > 20000:
x,y,w,h=cv2.boundingRect(cnt)
img_ = cv2.rectangle(img ,(x,y),(x+w,y+h),(0,0,255),4) # 画框
print('')
img__ = img[y-h:y+h,x-w:x+w,:]
cv2.imwrite(path + 'abc_open.png', opening)
cv2.imwrite(path + 'abc_close.png', closing)
cv2.imwrite(path + 'abc_close_range.png', img_)

  

最新文章

  1. Lua修改文件名
  2. javax.servlet.ServletException: com.ibatis.sqlmap.client.SqlMapException: There is no statement named...问题
  3. UnicodeEncodeError
  4. CollatingOfData 之 JsonHelper
  5. poj3429(有错)
  6. gitignore git提交忽略文件
  7. 生成csv格式文件并导出至页面的前后台实现
  8. (NO.00001)iOS游戏SpeedBoy Lite成形记(二十三)
  9. top_channel_args.go
  10. C# 给现有PDF文档添加页眉、页脚
  11. Asp .Net core 2 学习笔记(1) —— Starup
  12. [原创]互联网金融App测试介绍
  13. Java的jdk1.6与jre1.8中存在的差异
  14. Java jdbc访问sqlserver,oracle数据库 DEMO
  15. Gson的几种使用方式
  16. maven环境的搭建,lemon-OA办公系统的搭建
  17. 『PLSQL』在oracle表中怎样创建自增长字段?
  18. Android:Activity统一堆栈管理(实现随时finish特定或是所有Activty)
  19. phpstrom怎样显示类的方法或函数列表
  20. 江西理工大学编程俱乐部 2328 Star

热门文章

  1. Java实现 蓝桥杯 算法训练 天数计算
  2. Java实现 LeetCode 面试题62. 圆圈中最后剩下的数字(约瑟夫环)
  3. Java实现 LeetCode 553 最优除法(思路问题)
  4. Java实现 蓝桥杯VIP 算法训练 猴子分苹果
  5. Java实现 LeetCode 135 分发糖果
  6. Java实现考察团组成
  7. HDU-3033 I love sneakers! 题解
  8. cnpm的安装(超级详细版)
  9. HttpClient 常用方法封装
  10. Xor Sum(讲解异或)【字典树】