python图像处理入门-提取轮廓

liftword6个月前 (01-08)技术文章86

提取图像中物体的轮廓,通常用在图像识别中,比如图像像素级分割,应用面比较广。

import cv2

import numpy as np

from skimage.measure import find_contours

img_path = "D://001.jpg"

img_bgr = cv2.imread(img_path) #读取图像

rows = img_bgr.shape[0] #图像的宽度
cols = img_bgr.shape[1] #图像的长度

img_gray = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2GRAY) #转为灰度图

_, thres = cv2.threshold(img_gray, 80, 255, cv2.THRESH_BINARY) #阈值二值化

cv2.imwrite("D://001_thres.jpg", thres) #保存阈值化后的图

mask = np.zeros((rows, cols), dtype=np.uint8)
mask[:, :] = np.where(thres[:, :] == 0, 0, 1) #构建二值图掩码
contours = find_contours(mask, 0.5) #寻找二值图的轮廓

verts = np.fliplr(contours[0]) - 1  #物体的外轮廓通常是最长的一个,这里只找物体的外轮廓
for k in range(len(verts) - 1):
    spos = (int(verts[k][0]), int(verts[k][1]))
    epos = (int(verts[k + 1][0]), int(verts[k + 1][1]))
    cv2.line(img_bgr, spos, epos, (0, 0, 255), 2)   #将外轮廓用红色的线绘制到原图上
   
 cv2.imwrite("D://001_contour.jpg", img_bgr) #保存绘制了红色外轮廓的图

每步的效果图如下:

涉及的函数介绍:

相关文章

Python自动化办公:一分钟高效搞定Excel所有图片的导入导出

在日常办公中,我们经常需要在Excel表格中插入或导出图片,特别是在制作产品目录、报告或展示数据时。现在有这样一份任务,产品名录表里需要将每个产品的实拍图片插入到D列上,产品有上百个,传统方法需要将图...

一篇带你实战的Python绘图Turtle库

Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行...

使用Python将图片转换为字符画并保存到文件

字符画(ASCII Art)是将图片转换为由字符组成的艺术作品。利用Python,我们可以轻松实现图片转字符画的功能。本教程将带你一步步实现这个功能,并详细解释每一步的代码和实现原理。环境准备首先,你...

Python——如何写一个自动生成短视频的小工具

在如今这个短视频风靡的时代,大家都想在短视频领域分一杯羹。要是有个能自动生成短视频的小工具,那可就太实用啦!今天咱就来聊聊怎么写一个简易的自动生成短视频小工具代码,不管你是编程爱好者,还是想为自己的自...

Python批量重命名照片:让你的照片整理更加高效

Python批量重命名照片:让你的照片整理更加高效在日常生活中,我们经常会拍摄大量的照片,而这些照片的命名往往比较杂乱,甚至无法一眼辨识出每张照片的具体内容。尤其是当你拍摄了成百上千张照片时,整理和查...

苹果M1芯片上运行Stable Diffusion,生成图片只需15秒,几步搞定

机器之心报道机器之心编辑部大火的Stable Diffusion,现在也能在苹果电脑上运行了。最近由慕尼黑大学等机构新出的文本 - 图像模型 Stable Diffusion,可谓是火出了圈,生成的图...