OpenCV的等高线画法

(OpenCV)图像目标尺寸检测   本文翻译自pyimagesearch技术博客上的一篇文章,《Measuring size of objects in an image with OpenCV》,原文作者:Adrian Rosebrock 。 https://www.pyimagesearch.com/2016/03/28/measuring-size-of-objects-in-an-image-with-opencv... 阅读详情

用于圈出图片上颜色深浅不同的区域

处理步骤:gray + threshold + open + distanceTransform + medianBlur + find_contours

from skimage import io,color
import numpy as np
import cv2
from matplotlib import pyplot as plt
from IPython.display import display
from ipywidgets import interact,interactive,fixed
plt.style.use('classic')

1.读取图片,并二值化

原始图片img

通道转换后的图片img2

img = io.imread('img.JPG')
img2 = io.imread('img2.JPG')

gray = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)
# ret 值多凭感觉
thresh = np.ones_like(gray)
ret = 168
thresh[gray < ret] = 255
thresh[gray > ret] = 0

fig = plt.figure(figsize=(16, 6))
plt.subplot(131),plt.imshow(img)
plt.subplot(132),plt.imshow(gray,'gray')
plt.subplot(133),plt.imshow(thresh,'gray')
plt.show()

原图-灰度图-二值化图

2.降噪,扩张并获得距离参数

# noise removal
kernel = np.ones((3,3),np.uint8)
opening = cv2.morphologyEx(thresh,cv2.MORPH_OPEN,kernel, iterations = 2)

# sure background area
sure_bg = cv2.dilate(opening,kernel,iterations=3)

# Finding sure foreground area
dist_transform = cv2.distanceTransform(opening,cv2.DIST_L2,5)

# distanceTransform
fig = plt.figure(figsize=(16, 6))
plt.subplot(131),plt.imshow(opening,'gray')
plt.subplot(132),plt.imshow(sure_bg,'gray')
plt.subplot(133),plt.imshow(dist_transform,'gray')

plt.show()

3.滑动调节等高线高度,绘制等高线


def distance(dist_transform,thresh=0.1):
    ret, sure_fg = cv2.threshold(dist_transform,thresh*dist_transform.max(),255,0)
    sure_fg = np.uint8(sure_fg)
    median_img = cv2.medianBlur(sure_fg,17)
    fig = plt.figure(figsize=(20,18))
    plt.subplot(121),plt.imshow(median_img,'gray'),plt.xticks([]),plt.yticks([])

    im2, contours, hierarchy = cv2.findContours(median_img, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    img_ground = img2.copy()
    cv2.drawContours(img_ground,contours,-1,(0,255,225),5)

    plt.subplot(122),plt.imshow(img_ground),plt.xticks([]),plt.yticks([])
    plt.show()

    return median_img,img_ground

lims = (0.0,1.0,0.05)
w = interactive(distance,dist_transform = fixed(dist_transform),thresh = lims)
display(w)

可以拖动进度条调整阈值,以改变等高线位置

效果图

OpenCV形状检测 开始定义我们的ShapeDetector类。我们将跳过这里的init构造函数,因为不需要初始化任何东西。#导入必要的包importcv2classShapeDetector#初始化形状名称并近似轮廓shape="unidentified"peri=cv2.arcLength(c,True)approx=cv2.approxPolyDP(c,0.04*peri,True)我们的检测方法,它只需要一个参数c,即我们试图识别的形状的轮廓。... 阅读详情

相关推荐

OpenCV绘制等高线Contours的实例

本文介绍了如何使用OpenCV绘制等高线Contours,并提供了相应的代码示例。其中,第一个参数是目标图像,第二个参数是找到的轮廓,第三个参数是-1表示绘制所有轮廓,第四个参数是绘制颜色,第五个参数是线条宽度。在计算机视觉领域,图像处理是一个非常重要的分支,而OpenCV作为一个广泛应用于图像处理的开源库,其强大的图像处理能力备受瞩目。本文将介绍如何使用OpenCV绘制等高线Contours,并提供相应的代码示例。其中,第一个参数是二值化图像,第二个参数是轮廓检索模式,第三个参数是轮廓近似方法。

TechWhizZ的博客 551

使用Python、Contours绘制等高线

将高度图分成15段(255/17),并将每一段用不同的颜色,由低到高、由红到蓝,绘制等高线。主要是通过python、opencv库的子模块Contour来分析灰度图,并绘制等高线。由于这里contours是数组,元素是点数据,所以还可以利用xml库输出svg矢量图。分析位图文件,将颜色分层,并绘制等高线。安装颜色库,用来计算颜色差值。

信箱神、得引擎 1197

OpenCV绘制等高线Contours的实例(C/C++)

该函数接受画布图像、轮廓点集合以及轮廓索引作为参数,并将指定轮廓绘制在图像上。在本例中,我们将所有的轮廓都绘制为红色线条,线宽为2个像素。在本例中,我们使用阈值128进行二值化处理,像素值大于128的像素设置为255(白色),像素值小于等于128的像素设置为0(黑色)。在本实例中,我们将使用C++和OpenCV库绘制图像的等高线轮廓。首先,我们需要读取一张图像,这可以通过使用。接下来,我们将对灰度图像进行二值化处理,将图像转换为二值图像。接下来,我们将创建一个与原始图像大小相同的画布,用于绘制轮廓。

CyberNova的博客 494

python 等高线地图 处理_openCV python基于边缘问题的等高线查找

我想查出一个车号!使用此代码:import numpy as npimport imutilsimport cv2# Read the image fileimage = cv2.imread('Car_Image_1.jpg')# Resize the image - change width to 500image = imutils.resize(image, width=500)# Dis...

weixin_39559119的博客 400

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

OpenCV绘制等高线Contour的实例OpenCV绘制等高线Contour的实例 OpenCV绘制等高线Contour的实例 #include "opencv2/imgproc.hpp" #include "opencv2/highgui.hpp" using namespace cv; using namespace std; int main( int argc, char** argv ) { Mat src; if( argc != 2 || !(src=imread(argv[

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1791

等高线生成算法

基于OpenGL的等值线生成算法的实现,全部源码 MFC界面

学习opencv:PS滤镜—等高线

摸索了两天,终于把等高线效果做出来了,摸索的过程也有记录的意义。下面开始。 等高线滤镜有色阶、较低、较高三个控制项,根据PS书籍记载,选择"较低"选项时将在基准亮度以下的轮廓上产生等高线,反之,在基准亮度以上的轮廓上产生等高线,这里的基准亮度就是指色阶。根据描述,可知这里进行了阈值处理,可以确定选择“较低”选项时,高于基准亮度的部分会被忽略,即置零,至于低于基准亮...

艾斯卡诺的博客 1103

关于提取contourf画的等高线的各个值的点坐标

输出MATLAB中contourf画的等高线的各个值对应的点坐标,具体输出见其中的说明文档

使用Python+OpenCV实现图像上轮廓绘制

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达在地形图中,你有没有注意到在山区和地形图中海拔高的区域周围画的线?这些线被称为地形等高线。它们给出了地形的高程剖面图。这些线条要么是手工绘制的,要么是电脑生成的。在本文中,我们将看到如何使用OpenCV在一个简单的图像上绘制等高线。findContours函数OpenCV为我们提供了“findContours”函数,该函数在二值...

小白学视觉 1078

将图片中每条存在的contour单独提取出来,

提取任意图片中所有存在的contour线条,每一条可以单独表示

kriging算法实现等高线

试用kriging算法,实现2维,3维的地图等高线

opencv矩形检测python_如何用python 3,opencv 3对矩形进行等高线检测?

你的方法有一些小缺陷,下面的代码将有所帮助。代码:import numpy as npimport cv2image = cv2.imread('C:/Users/Jackson/Desktop/score.jpg')#--- Resized the image to half its dimension maintaining the aspect ratio ---image = cv2.re...

weixin_39638708的博客 245

离散点等值线绘制程序vc6.0

源代码+demo+执行文件

java convexhull_android java opencv 2.4 convexhull convexdefect

Open-CV 2.4Android-Java:我搜索了等高线(MatofPoint列表),如下所示:Imgproc.findContours(roi_mat,contours,hierarchy,cfg.retMode,cfg.apxMode);然后是凸包(必须是MatofInt列表)for (int k=0; k < contours.size(); k++){Imgproc.conve...

weixin_30348079的博客 233

WSL 2 部署 Rocky Linux 9:从零到生产环境配置指南(2025版)

本文详细介绍了如何在WSL 2上部署Rocky Linux 9,从环境准备到生产环境配置的全流程指南。通过优化安装流程和系统配置,帮助开发者和运维工程师在Windows环境下高效运行企业级Linux系统,特别适合需要本地开发但部署到RHEL系服务器的项目。

weixin_28455801的博客 479

QSPI Flash的原理与QSPI时序的Verilog实现

本节主要是讨论QSPI(Quad SPI,四线SPI总线)的相关内容。我的开发板上有一片型号是W25Q128BV的Quad SPI Flash存储器,本文将以它为例子来说明QSPI操作的一些内容。

Go Forward Forever! 4167

opencv 实现等值线_OpenCV:检查像素是否在边界矩形内,由等高线分隔

我有一个形象面具,有一些我从Canny那里得到的轮廓。 我可以计算一个边界矩形(具有固定的给定角度)。现在我需要将这两个区域分离到该矩形的左侧和右侧。 我怎样才能做到这一点?请注意,我想要处理矩形内的区域,而不是轮廓的像素。编辑这是我如何从掩码获取每个边界矩形:cv::Mat img_edges; // mask with contours// Apply clustering to the ...

weixin_39914825的博客 390

Gemma 4 12B QAT+MTP小显存部署实战指南

大语言模型本地部署的核心瓶颈在于显存与推理效率的平衡。量化感知训练(QAT)通过在训练阶段模拟低精度计算,显著提升模型对INT4量化的鲁棒性;多令牌预测(MTP)则通过并行解码优化KV Cache复用,降低GPU kernel调用频次。二者协同可在8GB显存设备上稳定运行12B级模型,兼顾精度、速度与上下文长度。该方案适用于开发者本地AI助手、技术文档生成、SQL翻译等轻量但高交互需求场景,是当前Windows环境中小显存高效落地Gemma系列模型的工程最优解。

weixin_30934229的博客 377

python 封闭图形面积_python opencv填充未完全闭合的等高线

我使用openCV来查找给定图像的外部轮廓并填充它。我使用的图像作为输入是裤子的图像,就像一个附加的。问题是有时(如附件中所示)轮廓不是完全闭合的,然后我无法填充它。在这种情况下我能做什么?请参阅下面的代码。在谢谢,李from PIL import Imageimport osimport numpyimport bs4import scipyimport cv2image_obj_origina...

weixin_32515349的博客 1290

修改Avaya IP-Office电话交换机出厂自带的提示语音内容

1,本文的应用场景是在使用Avaya IP-office 500 v2电话交换机时,来电振铃超时后,会转入语音信箱,呼叫者会听到一条语音信箱留言的欢迎辞(…请留言…)。但我们单位情况比较特殊,首先是的IPO配置很精简,内嵌的语音信箱只能保留3天,用处不大;其次是用户没有收听语音信箱的习惯;第三是我们单位使用数字中继和DID,每人一个直拨号码,不通过总机转接。很多业务是单线联系,所以一旦来电无法接通,来电者可能完全无法联系到我们单位的其他同事。出于这三点原因,我们希望将语音信箱的欢迎辞,增加告知我们的总机电话

qlin4cn的博客 4919

YOLOv11涨点改进 | 全网独家创新,注意力改进篇 | TGRS 2025 | 引入APCM自适应像素级协同机制,动态增强目标区域、抑制背景噪声,助力YOLOv11做红外小目标检测有效涨点

本文提出了一种基于APCM模块改进的YOLOv11网络模型,通过像素级局部-全局协同建模增强目标特征并抑制背景噪声。APCM模块采用轻量化设计,无需复杂参数,能有效提升小目标检测性能。文章详细介绍了APCM的原理、优势及其在红外小目标检测中的应用,包括模块结构、核心代码实现和YAML配置文件修改方法。实验结果表明,该方法在NUAA-SIRST和IRSTD-1K数据集上优于现有技术,显著提高了复杂场景下的检测精度与鲁棒性。

Ai缝合怪、助力小伙伴高效发论文 118

OpenCV轮廓特性

  在这里,我们将学习提取一些常用的性质的物体,如固体,等效直径,面具图像,平均强度等。 1.纵横比 它是物体的宽度与高度的比值。 x,y,w,h = cv2.boundingRect(cnt) aspect_ratio = float(w)/h 2.程度 范围是等高线面积与边框面积之比。 area = cv2.contourArea(cnt) x,y,w,h = cv2...

rongpeisheng666的博客 717

2025_NIPS_Truthful Aggregation of LLMs with an Application to Online Advertising

大型语言模型(LLMs)生成内容的 revenue 变现是在线广告的下一个前沿领域。我们考虑这样一种场景:广告商旨在影响LLM的回复,而平台则寻求最大化广告商价值并确保用户满意度。核心挑战在于,广告商的偏好通常与用户偏好存在冲突,且广告商可能误报其偏好。为解决这一问题,我们提出MOSAIC——一种拍卖机制,它确保真实申报是广告商的占优策略,并使每个广告商的效用与其对社会福利的贡献保持一致。重要的是,该机制无需LLM微调或访问模型权重,且随着计算资源的增加,可证明收敛到最优微调LLM的输出。

c_cpp_csharp的专栏 82
上一篇: 图片处理之模式匹配(match_template)
下一篇: python小工具集锦
奥特曼不秃头
博客等级 码龄10年 24粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奥特曼不秃头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值