返回顶部
首页 > 资讯 > 后端开发 > Python >Python图像处理之如何实现目标物体轮廓提取
  • 703
分享到

Python图像处理之如何实现目标物体轮廓提取

2023-06-20 21:06:42 703人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章将为大家详细讲解有关python图像处理之如何实现目标物体轮廓提取,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1 引言目标物体的边缘对图像识别和计算机分析十分有用。边缘可以勾画出目标物体,使观察

这篇文章将为大家详细讲解有关python图像处理之如何实现目标物体轮廓提取,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

    1 引言

    目标物体的边缘对图像识别和计算机分析十分有用。边缘可以勾画出目标物体,使观察者一目了然;边缘蕴含了丰富的内在信息(如方向、形状等),是图像识别中抽取图像特征的重要属性。轮廓提取是边界分割中非常重要的一种处理,同时也是图像处理的经典难题,轮廓提取和轮廓跟踪的目的都是获得图像的外部轮廓特征。

    2 原理

    二值图像的轮廓提取的原理非常简单,就是掏空内部点:如果原图中有一点为黑,且它的8个相邻点皆为黑色,则将该点删除。对于非二值图像,需要先进行二值化处理。轮廓提取的方法有很多,在这里我们介绍一种最基本、最简单容易实现的算法。算法原理如下:

    • 在进行轮廓提取时,使用一个一维数组,用来记录处理的像素点的周围8邻域的信息

    • 若8个邻域的像素点的灰度值和中心点的灰度值相同,则认为该点在物体的内部,可以删除;

    • 否则,认为该点在图像的边缘,需要保留。

    • 依次处理图像中每一个像素,则最后留下来的就是图像的轮廓。

    3 Python实现

    1)读入彩色图像

    img_name = "./20210808/sample3.png"img = cv2.imread(img_name)

    结果如下:

    Python图像处理之如何实现目标物体轮廓提取

    2) 彩色图像灰度化

    gray_img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

    结果如下:

    Python图像处理之如何实现目标物体轮廓提取

    3)二值化

    def get_binary_img(img):    # gray img to bin image    bin_img = np.zeros(shape=(img.shape), dtype=np.uint8)    h = img.shape[0]    w = img.shape[1]    for i in range(h):        for j in range(w):            bin_img[i][j] = 255 if img[i][j] > 127 else 0    return bin_img# 调用bin_img = get_binary_img(gray_img)

    结果如下:

    Python图像处理之如何实现目标物体轮廓提取

    4)提取轮廓

    参考上述原理,进行实现,代码如下:

    def get_contour(bin_img):    # get contour    contour_img = np.zeros(shape=(bin_img.shape),dtype=np.uint8)    contour_img += 255    h = bin_img.shape[0]    w = bin_img.shape[1]    for i in range(1,h-1):        for j in range(1,w-1):            if(bin_img[i][j]==0):                contour_img[i][j] = 0                sum = 0                sum += bin_img[i - 1][j + 1]                sum += bin_img[i][j + 1]                sum += bin_img[i + 1][j + 1]                sum += bin_img[i - 1][j]                sum += bin_img[i + 1][j]                sum += bin_img[i - 1][j - 1]                sum += bin_img[i][j - 1]                sum += bin_img[i + 1][j - 1]                if sum ==  0:                    contour_img[i][j] = 255    return contour_img# 调用    contour_img = get_contour(bin_img)

    结果如下:

    Python图像处理之如何实现目标物体轮廓提取

    4 总结

    通过上述简单步骤,我们实现了物体轮廓提取,相应的处理效果如下:

    Python图像处理之如何实现目标物体轮廓提取

    关于“Python图像处理之如何实现目标物体轮廓提取”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

    --结束END--

    本文标题: Python图像处理之如何实现目标物体轮廓提取

    本文链接: https://lsjlt.com/news/300133.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • Python图像处理之如何实现目标物体轮廓提取
      这篇文章将为大家详细讲解有关Python图像处理之如何实现目标物体轮廓提取,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1 引言目标物体的边缘对图像识别和计算机分析十分有用。边缘可以勾画出目标物体,使观察...
      99+
      2023-06-20
    • Python图像处理之目标物体轮廓提取的实现方法
      目录1 引言2 原理3 Python实现1)读入彩色图像2) 彩色图像灰度化3)二值化4)提取轮廓4 总结1 引言 目标物体的边缘对图像识别和计算机分析十分有用。边缘可以勾画出目标物...
      99+
      2024-04-02
    • 如何使用Python OpenCV提取物体轮廓详解
      通常提取物体的轮廓时,图像都存在噪声,提取效果并不理想。如提取下图的轮廓时, 提取代码: import cv2 img = cv2.imread("mouse.png") cv...
      99+
      2024-04-02
    • 如何利用Python+OpenCV实现简易图像边缘轮廓检测(零基础)
      目录前言函数基础与三方库cv.threshold(pic,thresh,maxvalue,model)cv.findContours(待处理图片,model(提取模式),method...
      99+
      2024-04-02
    • Python如何实现数字图像处理染色体计数
      本篇内容主要讲解“Python如何实现数字图像处理染色体计数”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python如何实现数字图像处理染色体计数”吧!一、实验内容 对于下面这幅图像...
      99+
      2023-07-02
    • Python如何实现图像和办公文档处理
      这篇“Python如何实现图像和办公文档处理”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python如何实现图像和办公文档...
      99+
      2023-07-06
    • Python+OpenCV数字图像处理中如何进行ROI区域的提取
      本篇文章给大家分享的是有关Python+OpenCV数字图像处理中如何进行ROI区域的提取,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、实现原理先通过cv.cvtColor...
      99+
      2023-06-22
    • Python底层技术揭秘:如何实现图像处理
      Python底层技术揭秘:图像处理的实现及代码示例导语:图像处理是计算机科学中十分重要的一个领域。通过使用Python以及相关的底层技术,我们能够实现各种各样的图像处理操作。在本文中,我们将揭示Python图像处理的底层技术,并提供一些实用...
      99+
      2023-11-08
      Python 技术 图像处理
    • 如何在Python中使用OpenCV实现图像平滑处理操作
      这期内容当中小编将会给大家带来有关如何在Python中使用OpenCV实现图像平滑处理操作,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。什么是图像平滑处理在尽量保留图像原有信息的情况下,过滤掉图像内部的噪...
      99+
      2023-06-15
    • 批处理如何实现把两个文件中的不同之处提取到某个文件里
      这篇文章将为大家详细讲解有关批处理如何实现把两个文件中的不同之处提取到某个文件里,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。代码如下:@echo off :: 把两个文件中...
      99+
      2023-06-08
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作