首页
学习
活动
专区
圈层
工具
发布

【CV 向】如何打造一个“数串串神器“

钢管通常具有金属质感,常见的颜色有银灰色、黑色等。人们通过观察钢管的颜色来初步判断是否为钢管。 2、形状识别:人类会观察钢管的形状。钢管通常是圆柱形状,具有一定的长度和直径。...参数空间:在霍夫圆变换中,使用三个参数来表示一个圆:圆心的x坐标、圆心的y坐标以及圆的半径r。通过设定合适的参数范围,创建一个二维的参数空间来表示所有可能的圆。...对于相邻的圆,进行非最大抑制,保留具有最高累加值的圆,抑制其他圆。 绘制圆:根据筛选出的圆心和半径,在原始图像上绘制检测到的圆。...然后,可以使用OpenCV中的轮廓分析、形状分析等技术对钢管进行进一步处理和计数。...总结 在本文中,我们介绍了使用OpenCV和深度学习来解决数钢管和数串串的问题,使用OpenCV的Blob Detection和Hough Circle技术对钢管以及串串进行检测,并使用轮廓分析对钢管进行计数

1.1K20

【CV 向】如何打造一个“数串串神器“

钢管通常具有金属质感,常见的颜色有银灰色、黑色等。人们通过观察钢管的颜色来初步判断是否为钢管。2、形状识别:人类会观察钢管的形状。钢管通常是圆柱形状,具有一定的长度和直径。...参数空间:在霍夫圆变换中,使用三个参数来表示一个圆:圆心的x坐标、圆心的y坐标以及圆的半径r。通过设定合适的参数范围,创建一个二维的参数空间来表示所有可能的圆。...对于相邻的圆,进行非最大抑制,保留具有最高累加值的圆,抑制其他圆。绘制圆:根据筛选出的圆心和半径,在原始图像上绘制检测到的圆。...然后,可以使用OpenCV中的轮廓分析、形状分析等技术对钢管进行进一步处理和计数。...总结在本文中,我们介绍了使用OpenCV和深度学习来解决数钢管和数串串的问题,使用OpenCV的Blob Detection和Hough Circle技术对钢管以及串串进行检测,并使用轮廓分析对钢管进行计数

1.6K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【OpenCV入门之十五】随心所欲绘制想要形状

    radius:圆形的半径。 color:线条的颜色。 thickness:如果是正数,表示组成圆的线条的粗细程度。否则,表示圆是否被填充。 line_type:线条的类型。...见 cvLine 的描述 shift:圆心坐标点和半径值的小数点位数。 画圆画点都是使用circle()函数来画,点就是圆,我们平常所说的圆只不过是半径大一点而已。... using namespace std; using namespace cv; //画圆画点都是使用circle()函数来画,点就是圆,我们平常所说的圆只不过是半径大一点而已...这样子我们就画出了绿色的空心点 //这种初始化点的方式也可以 Point p2; p2.x = 100; p2.y = 100; //画实心点 circle..._4或LINE_8是带锯齿的,LINE_AA是抗锯齿的 } void drawRectangle(){//绘制矩形 //OpenCV的坐标系,原点在屏幕左上角,x朝右正,y朝下正 Rect

    2.2K30

    OpenCV极坐标变换函数warpPolar的使用

    (几乎)相同的源边界圆面积 当width>0并且height 圆区域按比例缩放 当width和height都 > 0, 目标图像将具有给定的大小,因此边界圆的面积将缩放为dsize...flags:插值方法与极坐标映射方法标志 插值方法:图像缩放之后,肯定像素要进行重新计算的,就靠这个参数来指定重新计算像素的方式,一般分为: INTER_NEAREST - 最邻近插值...3 将获取到的圆每个分别截取出来进行极坐标变换显示出来 完整代码 #include #include opencv2/opencv.hpp> using namespace...vector circles; HoughCircles(gray, circles, HOUGH_GRADIENT, 1, 50, 100, 100); //绘制检测到的圆型...for (size_t i = 0; i < circles.size(); ++i) { Vec3f item = circles[i]; //绘制检测到的圆 circle

    1.1K10

    OpenCV中实现曲线与圆拟合

    使用OpenCV做图像处理与分析的时候,经常会遇到需要进行曲线拟合与圆拟合的场景,很多OpenCV开发者对此却是一筹莫展,其实OpenCV中是有现成的函数来实现圆拟合与直线拟合的,而且还会告诉你拟合的圆的半径是多少...,简直是超级方便,另外一个常用到的场景就是曲线拟合,常见的是基于多项式拟合,可以根据设定的多项式幂次生成多项式方程,然后根据方程进行一系列的点生成,形成完整的曲线,这个车道线检测,轮廓曲线拟合等场景下特别有用...得到多项式方程以后,就可以完整拟合曲线,图中有如下四个点: ? 调用polyfit生成的二阶多项式如下: ? 拟合结果如下: ? 使用三阶多项式拟合,调用polyfit生成的多项式方程如下: ?...圆的拟合是基于轮廓发现的结果,对发现的近似圆的轮廓,通过圆拟合可以得到比较好的显示效果,轮廓发现与拟合的API分别为findContours与fitEllipse,有图像如下: ?...使用轮廓发现与圆拟合处理结果如下: ?

    5.7K41

    opencv(4.5.3)-python(四)--绘图

    翻译及二次校对:cvtutorials.com 目标 • 学习用OpenCV绘制不同的几何图形 • 你将学习这些函数:cv.line(), cv.circle(), cv.rectangle(), cv.ellipse...这一次我们将在图像的右上角画一个绿色的矩形。 cv.rectangle(img,(384,0),(510,128),(0,255,0),3) 绘制圆 要画一个圆,你需要它的中心坐标和半径。...cv.polylines() 可以用来绘制多条线。只要创建一个你想画的所有线条的列表并把它传给函数。所有的线都将被单独绘制。与为每条线调用cv.line()相比,这是一个更好更快绘制一组线的方法。...为了获得更好的外观,推荐使用lineType = cv.LINE_AA。 我们将在我们的图像上显示白色的OpenCV。...正如你在以前的文章中所学习的那样,显示图像就可以看到它。 其他资源 • 椭圆函数中使用的角度不是我们平常所指的圆角。 练习 • 试着用OpenCV中的绘图函数来创建OpenCV的标志。

    1.2K20

    Halcon实例转OpenCV之焊点检测

    Halcon例程中有一个焊点检测例程ball.hdev,大家可以在例程中搜索查看,如下是实例使用的测试图和运行结果图: 测试图像: ? 运行结果图: ?...实现的大致步骤: ① 二值化后获取Board区域,设置为分析的ROI ② 二值化 + 开运算获取和分割大致为焊点的区域 ③ 通过Blob的圆度阈值删选,剔除非圆的Blob,保留圆形焊点...④ 计算圆形焊点的最小外接矩形直径并标示 Halcon实现代码: * ball.hdev: Inspection of Ball Bonding * dev_update_window...halcon做开运算使用的opening_circle()算子,使用的圆形结构元素,对于提取圆形轮廓来说,圆形结构元素比矩形结构元素更好,下面是比对效果: 矩形结构元素做开运算效果: ?...0~255的随机数,可能生成的颜色会比较暗,这里使用一个包含6种颜色的数组,通过取余的方式来给对应的圆形轮廓赋值,然后用最小外接圆的参数来绘制。

    1.4K10

    实战 | OpenCV中更稳更快的找圆方法--EdgeDrawing使用演示(详细步骤 + 代码)

    导 读 本文主要介绍如何在OpenCV中使用EdgeDrawing模块查找圆(详细步骤 + 代码)。...背景介绍 从OpenCV4.5.2开始,Contrib模块中封装了开源库ED_Lib用于查找图像中的直线、线段、椭圆和圆。...然后我们处理这些随机形状的边缘段以提取更高级别的边缘特征,即直线、圆、椭圆等。从阈值梯度幅度中提取边缘像素的流行方法是非极大值抑制,它测试每个像素是否具有最大值沿其梯度方向的梯度响应,如果没有则消除。...因此,它可以提取高质量的边缘片段,而不需要额外的滞后步骤。...当然,EdgeDrawing还可以获取边缘信息和查找直线,效果如下: 【2】C++中使用演示: //公众号--OpenCV与AI深度学习 #include #include

    8.8K11

    来,我教你用Python做个音乐海报

    ,第三个为颜色 im = Image.new('RGBA', (300, 300), (255, 255, 255, 0)) 上述代码是创建了一个完全透明的300*300的图片,我们在该图片上绘制一个最大的圆...: # 获取绘制者 drawer = ImageDraw.Draw(im) # 绘制一个黄色的圆,ellipse方法传入三个参数,第一个为包含该圆的最小正方形的区域,第二个为颜色,第三个为边宽 drawer.ellipse...就是圆形图片了,完整代码如下: # 背景图中圆的直径 radius = 533 # 图片的大小 circle_size = (radius, radius) def generate_circle_image...radius = 533 # 圆的直径 circle_size = (radius, radius) # 圆的外接正方形的大小 def generate_circle_image...我们可以使用OpenCV识别主体图片的人脸,然后根据人脸区域计算一个比较适合的正方形区域,这样我们就不必传入正方形(不过还要考虑人脸识别的精确度等问题)。

    1.2K20

    技巧 | OpenCV中如何绘制与填充多边形

    很多人都问过我这个问题,OpenCV中是怎么绘制与填充多边形的,特别是填充多边形的。因为根据OpenCV中的多边形绘制函数,他们发现这是一个无解的问题。...多边形绘制 OpenCV中支持常见的点、线、圆、椭圆与矩形的绘制与填充都是通过设置thickness这个参数来实现绘制与填充,当thickness是正数的时就会绘制;当thickness为非正数时就会填充...第二个一次可以填充/绘制任意数目的多边形函数,该函数来自轮廓分析的轮廓绘制,因此很多人不会注意到它其实是一个很强悍的多边形填充与绘制函数,函数说明如下: void cv::drawContours (...,它本质上把每个多边形的顶点集作为轮廓看待,可以很方便的完成轮廓的绘制与填充,跟点、线、圆、椭圆与矩形的绘制与填充一样,都是通过设置thickness这个参数来实现绘制与填充。...就这样一个函数就可以轻松搞定多边形的填充与绘制。

    4K20

    《天才引导的历程:数学中的伟大定理》从月牙定理看古希腊数学的奇妙突破

    古希腊人的 “化圆为方” 之梦 (一)几何作图的基本规则 在古希腊的数学世界里,几何作图有着独特而严格的规则。古希腊人仅使用圆规和无刻度的直尺这两种工具来构建各种图形 。...直尺,虽无刻度,却能绘制出笔直的线条,代表着纯粹的理性与秩序。在古希腊人眼中,直线和圆是最基本、最完美的几何图形,它们的组合能够展现出数学的简洁之美和逻辑的严密性。...(二)化圆为方问题的起源与发展 化圆为方问题的起源可以追溯到公元前 5 世纪。传说古希腊哲学家安那萨哥拉斯在狱中,看到透过正方形铁窗的圆形月亮,从而引发了他对圆与正方形面积关系的思考。...割圆术 阿基米德也对化圆为方问题进行了深入研究,他将问题转化为作一个直角三角形,使其夹直角的两边长分别为已知圆的周长和半径,若能作出这样的三角形,就可以作出同面积的正方形 。...接下来,观察图形可以发现,两个月牙形的面积之和等于以 AC 为直径的半圆面积 + 以 BC 为直径的半圆面积 - 以 AB 为直径的半圆面积 + 三角形 ABC 的面积 。

    71910

    OpenCv相机标定——圆形标定板标定

    1.标定图案   OpenCv中使用的圆形标定图案如图1所示: OpenCv中,使用圆形标定图案用到的函数为 cv::findCirclesGrid()。...关于圆的半径大小,可以自行设定,因为在提取圆心坐标时不涉及圆的半径(这点和halcon标定不同,halcon在进行相机标定时,圆的半径作为标定文件中的已知参数)。圆心距一般取圆直径的4倍左右。   ...图2为本文使用的标定板,其为高精度铝制标定板,精度为±0.01mm,是200x200mm的halcon标准标定板,圆的直径为12.5mm,圆心距为25mm。...从表中可以看出,OpenCv标定的重投影误差为0.01759,精度较高,小于Halcon标定的0.069。...如果使用halcon在线抓图标定,可以有效避免图像品质问题,从而大幅度提高标定精度,预计标定精度和OpenCv标定相当或者更高。

    6.9K20

    π 的美丽

    伟大的曼德尔布罗特 | Pi的历史 | 如何烘焙Pi ? Pi是圆周长与直径的比值。直径正好与边界的π倍相吻合。Pi展开 不幸的是,这是错误的,因为数学家们还没有证明pi具有“常态”的特征。...或者使用pi的40位数字就足以计算银河系的周长,其误差是否小于质子的大小呢(美国国家航空航天局喷气推进实验室)?Pi的前152位是否足以找到可观测宇宙的周长为930亿光年呢(《连线》)?...然而,使用这种方法,当他使用正方形时,这两个值之间的差异非常大。所以,他画了五边形来观察圆周长的上下限。他当时得到一个小区间。之后,他不断增加他在圆内外绘制的多边形的数量。...假设你正在使用1×1的网格。你正在生成0和1之间的用来绘制坐标平面上的点。如果你继续绘制点,你将会看到一些点到原点的距离小于1.其中一些点将大于1。在某些点之后,你会发现你得到了一个四分之一圆。...如果你找到该四分之一圆的面积,它近似π/ 4。下面有一个1000点的例子。你可以从这里开始试试。 ? 蒙特卡罗模拟 如果你不想处理计算机编程,那么你只需使用一只铅笔和一张纸来完成。

    1.4K10

    VC++中使用OpenCV绘制直线、矩形、圆和文字

    VC++中使用OpenCV绘制直线、矩形、圆和文字 在VC++中使用OpenCV绘制直线、矩形、圆和文字非常简单,分别使用OpenCV中的line、rectangle、circle、putText这四个函数即可...具体可以参考OpenCV官方文档:https://docs.opencv.org/4.x/index.html 下面的代码展示了在VC++中如何使用OpenCV绘制直线、矩形、圆和文字 #include...30的圆,颜色为青色(绿+蓝=青(Cyan)) cv::circle(img, cv::Point(400, 50), 30, cv::Scalar(255, 255, 0), 2); // 在(350,300...)处绘制文字,字体为FONT_HERSHEY_COMPLEX,比例为1,颜色为黄色,厚度为2 cv::putText(img, "OpenCV", cv::Point(350, 300), cv::FONT_HERSHEY_COMPLEX...官网 Python中使用Opencv-python库绘制直线、矩形、圆、文字

    1.8K00

    OpenCV-Python实战(2) —— 使用OpenCV的绘图功能创建OpenCV的徽标

    需求分析 使用OpenCV中可用的绘图功能创建OpenCV的徽标; 目标图像及目标图像的宽高; 测量绘制的目标的外径和内径; 测量绘制的目标的颜色; 计算绘制的目标的圆心; 绘制目标的文字; 将原图和绘制图像放到一起对比...代码实现 目标图像及目标图像的宽高; 复制一个opencv-logo矩阵; 使用Photoshop测量外径和内径; 使用Photoshop测量各个圆的颜色; 计算各个绘制圆的圆心; 分别绘制三个圆,使用同心圆去掉中间部分...,使用椭圆实现圆弧缺口; 绘制 OpenCV 的文字; 将原图和自绘图放入一张图片进行对比。...min_r = int(min_d / 2) # 使用Photoshop测量各个圆的颜色 color_red = (68,42,255) color_green = (103,218,139...总结 由于图像尺寸不大,所以采用的 lineType 是 cv.LINE_AA,图标看着比较平滑; 由于原图标的字体没找到,因此在 cv 提供的字体中找了一个比较接近的字体; 椭圆的 angle 参数是可以控制圆弧的旋转的

    98310

    用Wolfram语言绘制一笔画环形迷宫

    因为这个 x/2 和层数 n 相关,所以我们最好把它定义成一个函数: 然后可以定义有一个缺口的圆的函数,参数为半径和开口中心的角度(这个开口中心的角度可以称为主角度),这个函数用于绘制最内层和最外层的圆...a 到 b 的圆弧的函数,不论 a 和 b 大小关系如何,始终绘制从 a 出发,沿圆逆时针行进到 b 的圆弧: 这样就可以从容绘制迷宫中间那些圆弧了,这些圆弧都承担着内层外缘和外层内缘的作用,所以每个都是开了两个口子的圆...下面这个的初始状态是一眼可以看出来的迷宫: 02 随机角度选择 第一个观察是这个角度列表长度必须是奇数,不然中心拓扑上就是圆的内部,怎么走也是走不到外面的。...不说结合第一个观察,从内到外偶数位置的缺口怎么走也走不到的,即便相邻的偶数接口在圆的同一个位置,也无关紧要。所以这一条原则又可以修正为相邻奇数位置的角度不能一样,而是要尽可能的差异化。...通过观察可以发现,其实对于一个角度序列,就是要连通奇数位置的(假定起始位置是1)角度。而从哪个方向走取决于偶数位置的角度,要偶数位置的角度没有挡在奇数位置之间。

    2K40

    WPF 中的圆形不够圆?

    独立观察员 2024 年 4 月 22 ‍上周五,在使用一个 Grid 和两个 Border 来制作一个同心圆的时候,发现怎么看着不太圆啊,问了一下 [Kimi],说是应该使用 Ellipse 来画圆...在使用默认样式的 RadioButton 时,发现圆圈好像不够圆,仔细观察一下,其实不是圆圈不圆,而是中心点不在中间: 后来发现需要设置 UseLayoutRounding="True" 来解决: 也就是布局时进行尺寸和位置的四舍五入...今天满怀希望地试了一下,发现不行(底部为放大镜视角;这个是用户控件,套了一层 ViewBox,使用时设置的直径为 20,955 右边那个为原始尺寸;可以看到尺寸越小,形变越明显): 而且去掉这个设置,它又换了个姿势...,但还是不圆: 不过这个可能是因为 Grid 边长 50,外圈圆形直径 49,但是 StrokeThickness 为 2,有可能超出了,所以外圈直径改为 48(现在想想应该改为最多 46),果然变圆了...对于 RadioButton,可通过设置 UseLayoutRounding="True" 来解决;对于 Border 模拟的同心圆,或者 Ellipse 绘制的同心圆,暂时没找到好方法,只能通过微调尺寸来解决

    56710
    领券