先上效果图:

原图:

思路:

主要使用 cv2.pointPolygonTest 来寻找图像中所有点与轮廓的最短距离,根据函数的特性,轮廓外为负轮廓内为正,再使用 cv2.minMaxLoc 筛选,提取我们取最大值索引就是圆心坐标,最大值就是圆心半径。

详细说明:cv2.pointPolygonTest
Point Polygon Test
求解图像中的一个点到一个对象轮廓的最短距离。如果点在轮廓的外部,
返回值为负。如果在轮廓上,返回值为 0。如果在轮廓内部,返回值为正。
下面我们以点(50,50)为例:
dist = cv2.pointPolygonTest(cnt,(50,50),True) 此函数的第三个参数是 measureDist。如果设置为 True,就会计算最
短距离。如果是 False,只会判断这个点与轮廓之间的位置关系(返回值为
+1,-1,0)。

import cv2
import numpy as np# 读取图片,转灰度
mask = cv2.imread("6.jpg")
mask_gray = cv2.cvtColor(mask, cv2.COLOR_BGR2GRAY)
# 二值化
ret, mask_gray = cv2.threshold(mask_gray, 127, 255, cv2.THRESH_BINARY)# 识别轮廓
contours, _ = cv2.findContours(mask_gray, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)# 计算到轮廓的距离
raw_dist = np.empty(mask_gray.shape, dtype=np.float32)
for i in range(mask_gray.shape[0]):for j in range(mask_gray.shape[1]):raw_dist[i, j] = cv2.pointPolygonTest(contours[0], (j, i), True)# 获取最大值即内接圆半径,中心点坐标
minVal, maxVal, _, maxDistPt = cv2.minMaxLoc(raw_dist)# 半径:maxVal  圆心:maxDistPt
# 转换格式
maxVal = abs(maxVal)
radius = int(maxVal)# 原图转换格式
result = cv2.cvtColor(mask_gray, cv2.COLOR_GRAY2BGR)# 绘制内切圆
cv2.circle(result, maxDistPt, radius, (0, 255, 0), 2, 1, 0)
# 绘制圆心
cv2.circle(result, maxDistPt, 1, (0, 255, 0), 2, 1, 0)
cv2.imshow('0', result)
cv2.waitKey(0)

opencv 绘制内切圆相关推荐

  1. 使用Python,Opencv绘制调色板及圆形来模拟霓虹的渐变效果

    使用Python,Opencv绘制调色板及圆形来模拟霓虹的渐变效果 1. 效果图 2. 源码 参考 这篇博客将使用python,opencv绘制调色板及圆形来模拟霓虹的渐变效果. 1. 效果图 可以构 ...

  2. 计算机视觉开源库OpenCV绘制轮廓,并将轮廓排序~

    计算机视觉开源库OpenCV绘制轮廓,并将轮廓排序~示例效果如下: 原图: 示例代码如下: #!/usr/bin/env python3import cv2def sort_contours(cnts ...

  3. OpenCV绘制等高线Contours的实例(附完整代码)

    OpenCV绘制等高线Contour的实例 OpenCV绘制等高线Contour的实例 OpenCV绘制等高线Contour的实例 #include "opencv2/imgproc.hpp ...

  4. [Python从零到壹] 三十五.图像处理基础篇之OpenCV绘制各类几何图形

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  5. 详解用OpenCV绘制各类几何图形

    本文分享自华为云社区<[Python从零到壹] 三十五.图像处理基础篇之OpenCV绘制各类几何图形>,作者:eastmount. 一.绘制直线 在OpenCV中,绘制直线需要获取直线的起 ...

  6. OpenCV绘制线、矩形、圆等基本几何形状

    OpenCV绘制线.矩形.圆.椭圆等基本几何形状 画线 画矩形 画圆 通过javaOpenCV中的Imgproc函数进行简单几何图形的绘制 画线 代码 public class DemoMat {st ...

  7. opencv 绘制图像轮廓

    图像轮廓概念 轮廓是一系列相连的点组成的曲线,代表了物体的基本外形. 谈起轮廓不免想到边缘,它们确实很像.简单的说,轮廓是连续的,边缘并不全都连续(下图).其实边缘主要是作为图像的特征使用,比如可以用 ...

  8. Opencv绘制HSV颜色直方图

    一. 使用Opencv绘制HSV颜色直方图 所用的函数 cvCvtColor 可在: 使用Opencv将RGB颜色空间转换到HSV颜色空间/灰度图 文章中查找相关介绍 所使用的结构体: CvHisto ...

  9. python opencv 绘制简单图形

    09-python opencv 绘制简单图形 09-python opencv 绘制简单图形 概述 实现过程 引用与创建空图 绘制直线 绘制矩形 绘制圆 绘制椭圆 添加文字 显示图像 源代码 运行结 ...

  10. python用函数绘制椭圆_Python学习笔记——opencv绘制椭圆

    在Python环境下使用opencv绘制椭圆,需要用到cv2.ellipse() 函数. 下面一段示例程序就是用该函数在黑色背景下,绘制一个圆心在(260,240).长轴170.短轴130.线宽为3的 ...

最新文章

  1. AttributeError: 'dict' object has no attribute 'status_code'
  2. 港大徐爱民组研究助理招聘-内分泌代谢方向
  3. 5.1 指针与地址 (C)
  4. WIN7的MKLINK命令,创建文件(夹)连接(链接)
  5. 文件传输_python socket实现文件传输(防粘包)
  6. 理解JavaScript的执行机制
  7. 教你如何成为解决问题的高手
  8. Python 文件读和写
  9. 小米台灯底座接口很松_选购台灯发愁?这篇桌面照明方案助你一臂之力
  10. [转载] Python pep8编码规范
  11. 【通信】基于matlab Alamouti空频编码【含Matlab源码 801期】
  12. Excel中vba教程——设置行高实例
  13. Undefined symbols for architecture x86_64:xxxxxx, referenced from:
  14. C程序10 自由落体
  15. 面包屑导航html页面,react怎么实现面包屑导航
  16. 图像的二阶导数为何对噪声尤为敏感-----图像二阶导数的本质
  17. 敬业福!2023官方集福攻略
  18. html文字段落加边框线,html给文字加边线框的代码
  19. BOM(材料清单)整理及文件格式说明
  20. PAT 1056 Mice and Rice

热门文章

  1. ffplay播放器-数据读取线程
  2. 【Uniapp】Uniapp 实现 App 版本自动升级
  3. 树莓派Pico 开机自动运行程序
  4. mysql根据经纬度计算距离并排序
  5. 转:MOSS 中的计算公式
  6. 影响力最大化——CELF算法的简介与python实现
  7. SqlServer2008创建用户及授予权限
  8. 迷你迅雷+SqlServer2008r2下载
  9. ApacheCN 活动汇总 2019.7.12
  10. 《数据结构导论》之树