iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >OpenCV图像轮廓的绘制方法
  • 599
分享到

OpenCV图像轮廓的绘制方法

2024-04-02 19:04:59 599人浏览 薄情痞子

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

摘要

本文实例为大家分享了检测几何图形轮廓和检测花朵图形轮廓,供大家参考,具体内容如下 OpenCV绘制图像轮廓 绘制轮廓的一般步骤: 1、读取图像 image = cv2.imrea

本文实例为大家分享了检测几何图形轮廓和检测花朵图形轮廓,供大家参考,具体内容如下

OpenCV绘制图像轮廓

绘制轮廓的一般步骤:

1、读取图像


image = cv2.imread('image_path')

2、将原图转化为灰度图像


image_gray  = cv.cvtColor(image, cv.COLOR_BGR2GRAY)

3、将灰度图像进行二值化阈值处理


# 这里将阈值设置为127为例,最大阈值为255
t, binary = cv.threshold(image_gray, 127, 255, cv.THRESH_BINARY)

4、检测二值化图像中边缘轮廓


# 这里以检测所有轮廓,不建立层次关系为例
contours, hierarchy = cv2.findContours(binary, cv2.RETR_LIST, cv2.CHaiN_APPROX_NONE)

5、在原图上绘制图像


# 这里将轮廓索引设置为-1,绘制出所有轮廓,颜色设置为红色,宽度为2为例
cv2.drawContours(image, contours, -1, (0, 0, 255), 2)

6、显示图像


cv2.imshow('image', image)

测试检测几何图形轮廓:

代码如下:


# -*- coding: utf-8 -*-
# @Time    : 2021/8/17
# @Author  : ZYh
"""
Introduction:
图像轮廓检测:
    OpenCV提供的findContours()方法可以通过计算图像梯度来判断出图像的边缘,然后将边缘的点封装成数组返回
    contours, hierarchy = cv2.findContours(image, mode, mothode)
    参数:
        image->被检测图像必须是8位单通道二值图像。如果原图是rgb图像,必须转为灰度图像,在进行二值化阈值处理
        mode->轮廓的检索模式
            参数值                     含义
            cv2.RETR_EXTERNAL       只检测外轮廓
            cv2.RETR_LIST           检测所有轮廓,但不建立层次关系
            cv2.RETR_CCOMP          检测所有轮廓,并建立两级层次关系
            cv2.RETR_TREE           检测所有轮廓,并建立树状结构的层次关系
        mothode->检测轮廓时使用的方法
            参数值                     含义
            cv2.CHAIN_NONE                储存轮廓上的所有点
            cv2.CHAIN_APPROX_SIMPLE       只保存水平、垂直或对角线轮廓的端点
            cv2.CHAIN_APPROX_TC89_L1      Ten_Chinl近似算法的一种
            cv2.CHAIN_APPROX_TC89_KCOS    Ten_Chinl近似算法的一种
    retval:
        contours->检测出的所有轮廓,list类型,每一个元素都是某个轮廓的像素坐标数组
        hierarchy->轮廓之间的层次关系
图像轮廓绘制:
    image = cv2.drawContours(image, contours, contourIdx, color, thickness, lineTypee, hierarchy,
        maxLevel, offse)
    参数:
        image->被绘制轮廓的原始图像,可以是多通道图像
        contours->findContours()方法得出的轮廓列表
        contourIdx->绘制轮廓的索引,如果为-1则绘制所有轮廓
        color:绘制颜色,BGR格式
        thickness->可选参数,画笔的粗细,如果为-1则绘制实心轮廓
        lineTypee->可选参数,绘制轮廓的线型
        hierarchy->可选参数,findContours()方法得出的层次关系
        maxLevel->可选参数,绘制轮廓的层次深度,最深绘制第maxLevel层
        offse->可选参数,偏移量,可以改变绘制结果的位置
"""
import cv2 as cv
# 读取加载图像
image1 = cv.imread('shape1.png')
image2 = cv.imread('shape1.png')
# 将图像由RGB格式转为灰度图像
gray1 = cv.cvtColor(image1, cv.COLOR_BGR2GRAY)
gray2 = cv.cvtColor(image2, cv.COLOR_BGR2GRAY)
# 将图像进行二值化阈值处理, 返回t是处理时采用的阈值,binary是阈值处理后的图像
t1, binary1 = cv.threshold(gray1, 127, 255, cv.THRESH_BINARY)
t2, binary2 = cv.threshold(gray2, 127, 255, cv.THRESH_BINARY)
# 检测图像中出现的所有轮廓,记录轮廓的每一个点
contours1, hierarchy1 = cv.findContours(binary1, cv.RETR_LIST, cv.CHAIN_APPROX_NONE)
# 显示原图
cv.imshow('image', image1)
# 绘制所有轮廓,宽度为3,颜色为红色
cv.drawContours(image1, contours1, -1, (0, 0, 255), 3)
cv.imshow('cv.RETR_LIST', image1)

# 检测图像中的外轮廓,记录轮廓的每一个点
contours2, hierarchy2 = cv.findContours(binary2, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_NONE)
# 使用cv2.RETR_EXTERNAL做参数绘制外轮廓,宽度为3,颜色为蓝色
cv.drawContours(image2, contours2, -1, (255, 0, 0), 3)
cv.imshow('cv.RETR_EXTERNAL', image2)

cv.waiTKEy()
cv.destroyAllwindows()

运行结果:

测试检测花朵图形轮廓:

代码如下:


# -*- coding: utf-8 -*-
# @Time    : 2021/8/18
# @Author  : ZYh
"""
Introduction:
绘制花朵所有轮廓
"""
import  cv2 as cv

image_flower = cv.imread('flower.png')
# 显示原图
cv.imshow('flower1', image_flower)
# 对图像进行中值滤波处理,去除噪声
image_flower = cv.medianBlur(image_flower, 5)
cv.imshow('flower2', image_flower)
# 将图像从RGB转为单通道灰度图像
gray_flower = cv.cvtColor(image_flower, cv.COLOR_BGR2GRAY)
# 灰度图像进行二值化阈值处理
t, binary = cv.threshold(gray_flower, 127, 255, cv.THRESH_BINARY)
# 显示二值化图像
cv.imshow('binary', binary)
# 获取二值化图像中的轮廓以及轮廓层次
contours, hierarchy = cv.findContours(binary, cv.RETR_LIST, cv.CHAIN_APPROX_NONE)
# 在原图中绘制轮廓
cv.drawContours(image_flower, contours, -1, (0, 255, 255), 2)
# 显示绘制轮廓后的图像
cv.imshow('cv.RETR_LIST', image_flower)

cv.waitKey()
cv.destroyAllWindows()

运行结果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: OpenCV图像轮廓的绘制方法

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • OpenCV图像轮廓的绘制方法
    本文实例为大家分享了检测几何图形轮廓和检测花朵图形轮廓,供大家参考,具体内容如下 OpenCV绘制图像轮廓 绘制轮廓的一般步骤: 1、读取图像 image = cv2.imrea...
    99+
    2022-11-12
  • OpenCV图像轮廓提取的实现
    目录前言提取傅里叶变换的高频信息通过蚁群算法进行图片轮廓提取Canny边缘检测  使用cuda加速提取轮廓前言 常用的轮廓提取算法有:Canny、阈值分割、提取傅...
    99+
    2022-11-13
    OpenCV图像轮廓提取 OpenCV 轮廓提取
  • OpenCV轮廓周围绘制矩形框和圆形框的方法
    轮廓周围绘制介绍 没什么概念,就是给得出来的轮廓绘制周围图形,例如下图给左侧得出的轮廓去绘图得到右侧图像: 相关API 减少多边形轮廓点数:approxPolyDP 函数作用:基于...
    99+
    2022-11-13
  • OpenCV 轮廓周围绘制矩形框和圆形框的方法是什么
    OpenCV 轮廓周围绘制矩形框和圆形框的方法是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。轮廓周围绘制介绍没什么概念,就是给得出来的轮廓绘制周...
    99+
    2023-06-29
  • OpenCV 图像绘制的实现
    目录+直线绘制圆形绘制矩形绘制椭圆型绘制自定义形状绘制文本+直线绘制 参数解析:(图像矩阵,直线起始坐标, 直线终止坐标、颜色、线条厚度) import cv2 import n...
    99+
    2022-11-12
  • Python OpenCV 基于图像边缘提取的轮廓发现函数
    基础知识铺垫 在图像中,轮廓可以简单的理解为连接具有相同颜色的所有连续点(边界)的曲线,轮廓可用于形状分析和对象检测、识别等领域。 轮廓发现的原理:先通过阈值分割提取目标物体,再通过...
    99+
    2022-11-11
  • Android+OpenCv4实现边缘检测及轮廓绘制出图像最大边缘
    实现步骤: 图像灰度化 边缘检测 根据Canny检测得出来的Mat寻找轮廓 算出最大轮廓周长or面积 根据获取到的最大轮廓下标进行轮廓绘制 ...
    99+
    2022-11-12
  • python opencv 找出图像中的最大轮廓并填充(生成mask)
    本文主要介绍了python opencv 找出图像中的最大轮廓并填充,分享给大家,具体如下: import cv2 import numpy as np from PIL imp...
    99+
    2022-11-11
  • 怎么在python中使用opencv查找图像中的最大的轮廓
    本篇文章给大家分享的是有关怎么在python中使用opencv查找图像中的最大的轮廓,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。具体如下:import cv2imp...
    99+
    2023-06-09
  • Python+OpenCV绘制多instance的Mask图像
    目标:Mask中,不同值表示不同的实例(instance),在原图中,绘制不同的instance实例,每个实例用不同颜色表示,实例边界用白色表示。 源码: def generate_...
    99+
    2022-11-11
  • python中opencv图像金字塔轮廓及模板匹配是怎样的
    这篇文章给大家介绍python中opencv图像金字塔轮廓及模板匹配是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.图像金字塔①高斯金字塔向下采样,数据会越来越少,减少的方式是:将偶数行和列删除向上采样,数据...
    99+
    2023-06-25
  • Android+OpenCv4如何实现边缘检测及轮廓绘制出图像最大边缘
    这篇文章将为大家详细讲解有关Android+OpenCv4如何实现边缘检测及轮廓绘制出图像最大边缘,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。实现步骤:图像灰度化边缘检测根据Canny检测得出来的Mat...
    99+
    2023-06-15
  • Python图像处理之目标物体轮廓提取的实现方法
    目录1 引言2 原理3 Python实现1)读入彩色图像2) 彩色图像灰度化3)二值化4)提取轮廓4 总结1 引言 目标物体的边缘对图像识别和计算机分析十分有用。边缘可以勾画出目标物...
    99+
    2022-11-12
  • android图像绘制(一)多种方法做图像镜像
    在android中做图像镜像有很多方法,今天算是学习了! 两种方法如下: 代码如下: //方法一 Matrix matrix = new Matrix(); matrix.p...
    99+
    2022-06-06
    方法 镜像 Android
  • 如何使用HTML5的drawImage()方法绘制图像
    本篇内容主要讲解“如何使用HTML5的drawImage()方法绘制图像”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用HTML5的drawImage()...
    99+
    2022-10-19
  • OpenCV 图像梯度的实现方法
    目录概述梯度运算礼帽黑帽Sobel 算子计算 x计算 y计算 x+y融合概述 OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大. 今天小白就带大家一起携手走进 Op...
    99+
    2022-11-12
  • OpenCV绘制圆角矩形的方法实例
    功能函数 // 绘制圆角矩形 void DrawRotatedRectChamfer(cv::Mat mask,const cv::RotatedRect rotatedrect...
    99+
    2022-11-12
  • python绘制直方图的方法
    本文实例为大家分享了python绘制直方图的具体代码,供大家参考,具体内容如下 用两列数据绘制直方图 #coding=gbk import xlwings as xw impor...
    99+
    2022-11-10
  • Opencv实现二维直方图的计算及绘制
    目录1. 效果图2. 源码参考这篇博客将介绍如何使用Python,Opencv进行二维直方图的计算及绘制(分别用Opencv和Numpy计算),二维直方图可以让我们对不同的像素密度有...
    99+
    2022-11-12
  • Python OpenCV中的drawMatches()关键匹配绘制方法
    目录作用说明函数原型参数详解结果作用说明 该方法被用于绘制关键点的匹配情况。我们看到的许多匹配结果都是使用这一方法绘制的——一左一右两张图像,匹配的关键点之间...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作