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

liftword4个月前 (01-08)技术文章57

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

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自动生成手绘、证件照、九宫格...太炫酷了

Python像是叮当猫的口袋,几乎什么都能做,适合外行小白们去摸索学习,能极大的增加对编程的兴趣。有些工具用python来实现不一定是技术上的最优选择,但可能是最简洁、最面向大众的。介绍几个不错的处理...

python调用 stable diffusion批量生成图片代码解析

文中大多数内容来源github,版权属于原作者,1. 基础环境在windows上做示例,本地要安装了pythonpython的pip模块 安装 webuiapi编辑器 pyCharm 2024.2(c...

Python 潮流周刊#51:用 Python 绘制美观的图表

本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进 Python 技术,并增长职...

使用 Python 玩转图片

我们有时候需要处理图片,对于一些不是非常复杂的图片处理,并非一定要使用 PS ,其实我们用 Python 代码也是可以实现滴~而且还挺方便,有些操作一两行代码就搞定了。有个 Python Image...

python批量生成二维码图片

1、创建一个TXT文本文档,用来存放需要生成二维码的单号,每行一个单号,单号如下:14251564612316sw132132并保存。2、在scewm.py文件中输入代码,代码如下:import qr...

如何在 Python 中从图像中提取表格

大约一年前,我的任务是从文档中提取和构建数据,主要包含在表格中。我没有计算机视觉方面的先验知识,很难找到合适的“即插即用”解决方案。可用的选项要么是基于神经网络 (NN) 的先进解决方案,这些解决方案...