【OpenCv 4 Python 3.7】对象测量(面积,周长,质心,边界框等)

机械臂初学者之OpenCV:物体识别 这是一个非常经典且强大的应用场景,涵盖了从视觉感知到物理执行的完整闭环。· 光照是关键:光照变化是视觉系统的天敌。· 精度分析:每一步(标定、检测、定位)都会引入误差,要分析整个系统的累积误差是否在抓取容差范围内。· 实时性:复杂的深度学习模型可能无法满足高速抓取的实时性要求,需要在算法速度和精度之间做权衡。没有准确的标定,后续所有计算都是错的。这一步的目标是回答:“我要抓的那个东西,在真实世界中的确切位置和角度是什么?· 从简单开始:先用一个颜色鲜艳、形状独特的物体(比如红色的圆柱体)开始实验。 阅读详情

opencv 对象测量

1、 opencv 中轮廓特征包括:
如面积,周长,质心,边界框等
*弧长与面积测量
*多边形拟合
*获取轮廓的多边形拟合结果

2、python-opencv API提供方法:

cv2.moments() 用来计算图像中的中心矩(最高到三阶),

cv2.HuMoments() 用于由中心矩计算Hu矩,同时配合函数cv2.contourArea()函数计算轮廓面积,和cv2.arcLength()来计算轮廓或曲线长度

*cv.approxPolyDP(多边形逼近)
-contour
-epsilon 越小越折 线越逼近真实形状
-close 是否为闭合区域

函数cv2.boundingRect返回四个参数(x,y)为矩形左上角的坐标,(w,h)是矩形的宽和高。 函数cv2.rectangle是绘制矩形函数

函数cv2.minAreaRect返回的是一个 Box2D 结构,
其中包含 :矩形左上角角点的坐标(x,y),矩形的宽和高(w,h),以及旋转角度。
但是要绘制这个矩形需要矩形的 4 个角点,可以通过函数 cv2.boxPoints() 获得,最后绘制得到旋转边界矩形。

函数cv2.minEnclosingCircle可以帮我们找到一个对象的外切圆。它是所有能够完全包括对象的圆中面积最小的一个。

函数cv2.fitEllipse返回值其实就是旋转边界矩形的内切圆

3、几何矩计算
一幅M×N的数字图像ƒ(i,j),其p+q阶 几何矩mpq 和 中心矩 μpq为:
在这里插入图片描述

其中
p+q = 0 为0阶矩
p+q = 1 为1阶矩
p+q = 2 为2阶矩

其中ƒ(i,j)为图像在坐标点(i,j)处的灰度值

代码实现:

import cv2 as cv
import numpy as np

#对象测量
def measure_object(image):
    #灰度图像
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    #二值化
    ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
    print("threshold value : %s"%ret)
    cv.imshow("binary image", binary)
    dst = cv.cvtColor(binary, cv.COLOR_GRAY2BGR)
    #轮廓检测
    contours, hireachy = cv.findContours(binary, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
    for i, contour in enumerate(contours):
        #求取轮廓的面积
        area = cv.contourArea(contour)
        #得到轮廓的外接矩形
        x, y, w, h = cv.boundingRect(contour)
        #求出宽高比
        rate = min(w, h)/max(w, h)
        print("rectangle rate : %s"%rate)
        #求取几何矩
        mm = cv.moments(contour)
        print(type(mm)) #mm:字典类型
        #得到中心位置
        cx = mm['m10']/mm['m00']
        cy = mm['m01']/mm['m00']
        #绘制圆
        cv.circle(dst, (np.int(cx), np.int(cy)), 3, (0, 255, 255), -1)
        #对每个轮廓绘制外接矩形
        #cv.rectangle(dst, (x, y), (x+w, y+h), (0, 0, 255), 2)
        print("contour area %s"%area)
        #多边形逼近,  True:表示闭合
        approxCurve = cv.approxPolyDP(contour,4, True)
        print(approxCurve.shape)
        if approxCurve.shape[0] > 6:
            #画在二值化图像上
            cv.drawContours(dst, contours, i, (0, 255, 0), 2)
        if approxCurve.shape[0] == 4:
            cv.drawContours(dst, contours, i, (0, 0, 255), 2)
        if approxCurve.shape[0] == 3:
            cv.drawContours(dst, contours, i, (255, 0, 0), 2)
        if approxCurve.shape[0] == 6:
            cv.drawContours(dst, contours, i, (100, 0, 100), 2)    
    cv.imshow("measure-contours", dst)


print("--------- Python OpenCV Tutorial ---------")
src = cv.imread("D:/vcprojects/images/blob.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
measure_object(src)
cv.waitKey(0)

cv.destroyAllWindows()

处理结果;

在这里插入图片描述

OpenCV-Python实战(10)——详解 OpenCV 轮廓检测 在计算机视觉领域,轮廓通常指图像中对象边界的一系列点。因此,轮廓通常描述了对象边界的关键信息,包含了有关对象形状的主要信息,该信息可用于形状分析与对象检测和识别。在本文中,将首次通过简单示例了解轮廓的基本概念,然后通过实际示例来了解如何检测和压缩轮廓,最后利用介绍如何利用图像矩描述检测到的轮廓属性。 阅读详情

相关推荐

亚像素光斑质心提取算法详解与工业实践指南

机器视觉系统中,图像传感器对连续光强的离散采样决定了像素级定位存在固有极限,而亚像素定位技术通过灰度分布模型与拟合算法可突破该限制,实现0.01像素级精度。本文从最基础的灰度重心法出发,系统讲解图像预处理、阈值分割、高斯曲面拟合及边缘圆拟合的数学原理与工程参数,并结合激光焊接现场特有的环形光斑、背吹保护气烟尘飞溅等干扰场景,给出组合式算法选型与鲁棒性优化方案。通过Python和OpenCV代码实现,配合仿真与实物验证方法,帮助读者理解亚像素光斑质心提取的核心逻辑,快速构建稳定可靠的光斑定位系统,支撑焊接焦点

weixin_34345753的博客 386

基于OpenCV的精度测量项目实战

课程的核心是开发一个基于OpenCV的“精度测量”项目。首先就是需要说明“什么是精度测量项目”,“精度测量的难点在哪里”,“精度测量的价值是什么,可用于哪些地方”?我们将围绕这若干问题的解决,展开全面的教学。 

Chromium实用技巧篇-如何下载指定版本的Chromium(一)

通过本指南,您已成功掌握如何在Windows系统上下载并安装最新版本的Chromium浏览器。我们详细介绍了从进入Chromium官网,到查找最新版本号,再到下载和安装的每一个步骤。通过这些步骤,您不仅能够体验到最新的浏览器功能,还可以参与开源项目的开发,享受高速、稳定、安全的浏览体验。

守城小轩的技术窝棚 1万+

opencv计算轮廓内面积的两种方法

文章目录一、cv2.contourArea二、按像素个数计算连通域面积 一、cv2.contourArea 起初使用该函数的时候看不懂返回的面积,有0有负数的,于是研究了以下。 opencv计算轮廓内面积函数使用的是格林公式计算轮廓内面积的,公式如下: 由于格林公式计算单连通域面积是以逆时针为正方向的,而有时候我们输入的边缘数组是按照顺时针输入的,所以导致计算面积会出现负数;计算面积存在0的情况一般是只存在一个像素点作为边缘点,所以面积为0。 我们以如下图像为例(口罩耳线),提取其中面积最大的两个区域.

DK_csdn1的博客 1万+

从零搭建UVM验证环境:新手入门实践指南

在数字芯片验证领域,SystemVerilog和UVM(Universal Verification Methodology)是构建高效验证环境的核心技术。其原理基于面向对象编程和事务级建模,通过组件化架构实现验证的复用性和自动化。这一方法学的技术价值在于显著提升验证效率与质量,广泛应用于处理器、通信芯片等复杂设计的验证场景。本文聚焦于UVM验证环境的搭建实践,通过一个加法器实例,详细解析了uvm_driver、uvm_monitor、uvm_sequence等关键组件的协同工作机制,并提供了基于Quest

weixin_30015371的博客 447

Unity Addressable资源缓存路径自定义指南:告别C盘爆满烦恼

本文详细介绍了如何自定义Unity Addressable系统的资源缓存路径,解决其默认存储在C盘导致的磁盘空间不足问题。通过配置CacheInitializationSettings并编写编辑器脚本,开发者可以将缓存迁移至项目目录,实现资源的集中管理,提升团队协作效率与开发环境一致性。

pytorch8learner的博客 475

opencv(Python/c++):轮廓检测(边界框、矩形区域,圆区域,凸轮廓,多边形算法approxPloyDP)

效果图: Python版 import cv2 import numpy as np img=np.zeros((200,200),dtype=np.uint8) img[50:150,50:150]=255 ret,thresh=cv2.threshold(img,127,255,0)#threshold阈值 image,contours,hierarchy=cv2.findContour...

weixin_42755384的博客 6500

K2P padavan固件下宽带与IPTV融合

举例说下,假如你的IPTV是拨号的,IPTV端口直接连到笔记本电脑的网口,IP是自动分配的情况下,在VLC里面是可以直接播放“rtp://239.XXX.XXX.XXX:XXXX”的,即使IPTV是DHCP模式,按道理也是可以播放的。家里很少看电视,基本上就是看看春晚,然后平时老人在家没事看看,所以就把广电的机顶盒停掉了,换了一个N1的盒子刷了CoreELEC系统,既可以通过m3u8文件看网络电视,也可以看本地的多媒体,很方便,完全满足了自己的需求。在上图的第三步中,端口设置成大于1024的端口即可。

aplsc的专栏 63万+

python求形心_轮廓的质心是否始终是其几何中心? (OpenCV,Python)

I am working with OpenCV+Python and I want to find the geometrical centre of the following contour:The OpenCV documentation suggests the following to find the centroid of a contour:import numpy as npi...

weixin_39760967的博客 722

原生H5如何优雅拦截浏览器返回事件:全面屏侧滑退出的解决方案

本文深入探讨了在原生H5中如何优雅地处理浏览器返回事件,特别是针对全面屏手机侧滑返回手势的解决方案。核心是利用HTML5 History API,通过`history.pushState`方法在历史栈中插入记录,并监听`popstate`事件,从而实现在用户侧滑时平滑关闭全屏预览层而非直接退出页面,有效提升了移动端H5应用的原生交互体验。

i0j1k2l3m的博客 270

AI 算力基础设施深度系列(一):从容器到 Kubernetes——算力底座的诞生

1. 容器 = Namespace(视图隔离) + Cgroup(资源限制) + Union FS(镜像分层)└── 不是虚拟机!共享内核,接近零开销2. K8S 三大设计哲学:└── 声明式 API + 控制循环 + 可扩展架构3. K8S 架构:└── 控制面 (API Server / etcd / Scheduler / Controller Manager)

warm3snow的博客 536

【Python+OpenCV】基于Harris角点的边缘提取以及矩形四角点检测

【Python+OpenCV】基于Harris角点的边缘提取以及矩形四角点检测开始之前必须要说的一些事一、参考文章二、实验目标三、局限性声明开始说正事了,所以标题一定要比第一个一级标题长一、思路(一)基于Harris角点检测[本文思路](二)基于Hough变换[参考思路]二、实现我的Main函数在干什么?分步实现!getMAD(s):利用绝对中位差剔除异常值CalcDegree(srcImage)...

lionkawoo的博客 3万+

H.264 Profile与Level详解:如何为不同应用场景选择合适的编码配置

本文深入解析了H.264编码标准中的Profile与Level概念,指导开发者如何为不同应用场景选择合适的配置。文章对比了Baseline、Main和High三大Profile的特性与适用场景,并解释了Level如何限定视频的分辨率、帧率与码率上限。通过实战指南,帮助读者在视频通话、在线点播和专业制作等场景中,平衡画质、兼容性与性能,实现高效编码。

rgv2345678的博客 239

OpenCV+python:轮廓发现与对象测量

1,轮廓发现 当通过阈值分割提取到图像中的目标物体后,就需要通过边缘检测来提取目标物体的轮廓,使用这两种方法基本能够确定物体的边缘或者前景。接下来,通常需要做的是拟合这些边缘的前景,如拟合出包含前景或者边缘像素点的最小外包矩形、圆、凸包等几何形状,为计算它们的面积或者模板匹配等操作打下坚实的基础。 一个轮廓代表一系列的点(像素),这一系列的点构成一个有序的点集,所以可以把一个轮廓理解为一个有序的点...

qq_43660987的博客 1725

Linux Kernel入门到精通系列讲解(RV-Kernel 篇) 5.6 在kernel 中实现系统复位和系统关机驱动

上一章节`Qemu`篇我们已经实现了我们`SOC`的`power reset`和 `power down` 寄存器,本章节我们就在`Linux driver`中去实现它

DSMGUOGUO的博客 544

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Python+OpenCV入门教程【十五】轮廓发现及对象测量

轮廓发现:当通过阈值分割提取到图像中的目标物体后,就需要通过边缘检测来提取目标物体的轮廓,使用这两种方法基本能够确定物体的边缘或者前景。接下来,通常需要做的是拟合这些边缘的前景,如拟合出包含前景或者边缘像素点的最小外包矩形、圆、凸包等几何形状,为计算它们的面积或者模板匹配等操作打下坚实的基础。 对象测量:opencv 中轮廓特征包括:如面积,周长,质心,边界框等。 findContours()与drawContours()详解点击此处 下面展示 代码。 import cv2 as cv import num

Whiser的博客 530

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Python+OpenCV图像处理之对象测量

OpenCV中经常会测量对象的面积,周长,质心,边界框等 求图形几何矩中心 并求最小外接矩形python实现 import cv2 import numpy as np __author__ = "boboa" def measure_demo(image): gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) ...

weixin_30711917的博客 312

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

opencv 对象测量

opencv 中轮廓特征包括: 如面积,周长,质心,边界框等 *弧长与面积测量 *多边形拟合 *获取轮廓的多边形拟合结果 python-opencv API提供方法: cv2.moments()用来计算图像中的中心矩(最高到三阶), cv2.HuMoments()用于由中心矩计算Hu矩, 同时配合函数cv2.contourArea()函数计算轮廓面积 和cv2.arcLength()来计算轮廓或曲...

yincheng_fans的博客 887

Python OpenCV 轮廓检测与轮廓特征,加图像金字塔知识补充一点点

Python OpenCV 轮廓检测与轮廓特征 cv2.findContours 函数 返回值 contours 轮廓特征 矩 轮廓面积 轮廓周长 外接矩形 其余补充学习

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 2万+

19. 对象测量

1. opencv 中轮廓特征包括: 面积,周长,质心,边界框等 弧长与面积测量 多边形拟合 获取轮廓的多边形拟合结果 2. python-opencv API提供方法: cv2.moments()用来计算图像中的中心矩(最高到三阶),会将计算得到的的矩以一个字典的形式返回; cv2.HuMoments()用于由中心矩计算Hu矩; cv2.contourArea()函数计算轮廓面积; 参数有2个: 1. 轮廓 2. 来指定对象的形状是闭合的(True),还是打开的(一条曲线) x, y,.

sckobe的博客 329

python+opencv 轮廓属性学习

x,y,w,h = cv.boundingRect(cnt) area = cv.contourArea(cnt) #面积,长度,长宽比。 # 如何让将指定轮廓的目标保存,消除不满足条件的轮廓 参考代码 # 找出轮廓的不同特征,如面积、周长、质心、边界盒等 # moments矩可以计算物体的质心、面积等特征;函数cv2.moments()提供了一个计算出所有力矩值的字典。 import cv2 import numpy as np image = cv2.imread('opencv_logo.j

weixin_43474255的博客 2223

opencv---边沿检测、轮廓、轮廓特征、轮廓层级

边缘检测,框出物体的轮廓(使用opencv-python) OpenCV 中的轮廓应用 感兴趣区域的移动物体检测,框出移动物体的轮廓 (固定摄像头, opencv-python) OpenCV图像处理-轮廓和轮廓特征 相关概念: 数学形态学操作 OpenCV图像处理|1.11 形态学操作 图像卷积、边缘提取和滤波去噪 图像边缘检测 - 图像梯度与Canny算子 OpenCV—python 图像显著性检测算法—HC/RC/LC/FT 轮廓处理的一般流程: 知识点1: 需要注意的是cv2.findConto

xys430381_1的专栏 3091

OpenCV轮廓检测实战:从二值化到工业测量的完整指南

在计算机视觉中,轮廓检测是图像处理与目标识别的核心技术之一,它通过分析图像中像素强度的不连续性来提取物体的形状边界。其原理基于对二值图像中连通区域的边界进行追踪,从而将离散的像素点转化为连续的几何形状。这项技术的核心价值在于能够将复杂的视觉信息简化为可量化的几何特征,为高级应用奠定基础。在工程实践中,轮廓检测广泛应用于自动化质检、医学影像分析、文档识别和机器人视觉导航等场景。本文聚焦于OpenCV中的轮廓处理,深入解析了二值化、轮廓检索模式与轮廓近似方法等关键概念,并结合工业零件尺寸测量等实际案例,详细介绍

weixin_30243533的博客 447

初尝图像识别

第一次接触图像识别是在2019的亚太数学建模上当时选择的是A题 利用photoshop对图像进行处理和提取 利用Python寻找SiO2的轮廓坐标 import numpy as np num = 497 while(num<=610): print(num) str1 = '%d'%num str = 'C:\\Users\\Li\\PycharmProje...

lixindayup的博客 301

OpenCV轮廓几何拟合:外接矩形、最小外接矩形、多边形拟合与外接圆实战

在计算机视觉与图像处理中,轮廓分析是连接像素级边缘检测与高层语义理解的关键桥梁。其核心原理在于将离散的轮廓点集转化为简洁的几何表征,从而提取目标的尺寸、方向、形状等结构化信息,极大提升了程序对视觉数据的处理能力。这项技术的核心价值在于实现了从‘看到’到‘理解’的跨越,广泛应用于工业质检、自动驾驶、文档识别及生物医学图像分析等领域。具体到OpenCV工具库,轮廓几何拟合主要通过四大核心函数实现:cv2.boundingRect()用于快速获取轴对齐的外接矩形,适用于目标定位与ROI提取;cv2.minArea

weixin_33831196的博客 326

零基础教程之OpenCV从入门到精通(三)——图像轮廓

本文详解OpenCV图像轮廓的数学定义及其在工业检测、医学影像等领域的应用,系统阐述轮廓检测全流程、特征量化分析方法与几何重构技术,提供可视化实践及外接矩形计算方案。

2401_83325465的博客 1019
上一篇: pip安装第三方库,将其同步到PyCharm中
下一篇: 【OpenCv 4 Python 3.7】图像形态学操作之膨胀腐蚀
YL_python_C++_java
博客等级 码龄7年 1392粉丝 142原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值