Python通过OpenCV的findContours获取轮廓并切割实例
作者:loovelj 时间:2022-12-11 22:33:05
1 获取轮廓
OpenCV2获取轮廓主要是用cv2.findContours
import numpy as np
import cv2
im = cv2.imread('test.jpg')
imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(imgray,127,255,0)
image, contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
其中,findContours的第二个函数很重要,主要分为 cv2.RETR_LIST, cv2.RETR_TREE, cv2.RETR_CCOMP, cv2.RETR_EXTERNAL,具体含义可参考官方文档
2 画出轮廓
为了看到自己画了哪些轮廓,可以使用 cv2.boundingRect()函数获取轮廓的范围,即左上角原点,以及他的高和宽。然后用cv2.rectangle()方法画出矩形轮廓
for i in range(0,len(contours)):
x, y, w, h = cv2.boundingRect(contours[i])
cv2.rectangle(image, (x,y), (x+w,y+h), (153,153,0), 5)
3切割轮廓
轮廓的切割主要是通过数组切片实现的,不过这里有一个小技巧:就是图片切割的w,h是宽和高,而数组讲的是行(row)和列(column)
所以,在切割图片时,数组的高和宽是反过来写的
newimage=image[y+2:y+h-2,x+2:x+w-2] # 先用y确定高,再用x确定宽
nrootdir=("E:/cut_image/")
if not os.path.isdir(nrootdir):
os.makedirs(nrootdir)
cv2.imwrite( nrootdir+str(i)+".jpg",newimage)
print (i)
这样就可以把确定的轮廓都切割出来了。
总结
python+opencv轮廓检测代码解析
OpenCV-Python实现轮廓检测实例分析
如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
来源:http://blog.csdn.net/loovelj/article/details/78739790
标签:python,opencv,findcontours


猜你喜欢
详解Mysql查询条件中字符串尾部有空格也能匹配上的问题
2024-01-13 11:06:50
关于Python中异常(Exception)的汇总
2022-11-29 05:42:15
PHP生成sitemap.xml地图函数
2024-06-05 09:23:16
使用Python写一个贪吃蛇游戏实例代码
2023-07-05 18:25:02
sql server利用不同语种语言显示报错错误消息的方法示例
2024-01-23 17:40:39

通过屏蔽IP来防止采集
2007-08-19 15:28:00
漫谈前端开发中的团队合作
2009-02-05 21:02:00
php基础字符串与数组知识点讲解
2023-05-25 08:28:14
vue实现在v-html的html字符串中绑定事件
2023-07-02 16:44:08
基于js实现抽红包并分配代码实例
2024-04-16 09:30:58
Django框架设置cookies与获取cookies操作详解
2021-07-24 09:10:49

python非单一.py文件用Pyinstaller打包发布成exe
2021-12-19 00:40:05

python使用numpy中的size()函数实例用法详解
2023-11-19 10:18:45
Python实现批量读取word中表格信息的方法
2023-03-25 19:02:05
Python将列表数据写入文件(txt, csv,excel)
2023-04-09 13:24:49
Oracle 9i 数据库异常关闭后的启动
2010-07-20 12:49:00
JS限制textarea字数
2009-09-28 14:41:00
python借助ChatGPT读取.env实现文件配置隔离保障私有数据安全
2022-12-26 17:54:13
Python SQLite3简介
2023-05-29 11:26:01
Python面向对象之内置函数相关知识总结
2022-06-05 10:30:24