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

基于OpenCV的图像形状检测(含源码)

导读 本文给大家分享一个用OpenCV传统方法实现形状检测的小案例。...: 上图中包含了矩形、正方形、三角形、圆形和五角形共5种形状,我们的目的是将其定位并标注对应的形状,效果如下: 实现步骤 【1】 图片转为灰度图,做二值化。...【4】 待优化部分: ① 判断矩形和正方形,原代码中使用外接矩形宽高插值做标准,可以改成宽高比值做判断标准; # 宽高插值小于3pixel if abs(width - height) <=3: 改为W...width * 1.0 / height) >= 0.95 and abs(width * 1.0 / height) <= 1.05: ② 区分星形(四角形/五角形)和正多边形(正八边形/正十边形)除了检测边数还可以加上凸包缺陷计算...,可以将二者很好的区分; ③ 上面虽然是比较简单的图形,但是方法和思想可以共用,大家可以将自己的图像先处理简单后再做识别,必要时可以使用角点、夹角、凸包缺陷等方法; 测试图片与源码下载链接: https

3.3K21

使用 OpenCV 进行图像模糊度检测(拉普拉斯方差方法)

写在前面 ---- 工作中遇到,简单整理 人脸识别中,对于模糊程度较高的图像数据,识别率低,错误率高。 虽然使用 AdaFace 模型,对低质量人脸表现尤为突出。...但是还是需要对 模糊程度高的图像进行丢弃处理 当前通过阈值分类,符合要求的进行特性提取 实际应用中,可以维护一个质量分数 比如由 模糊程度,图片字节大小,人脸姿态评估(欧拉角)等 算出一个综合质量分,用于人脸归类.../2015/09/07/blur-detection-with-opencv/ 具体实现方式小伙伴可直接看原文 这种方法起作用的原因是由于拉普拉斯算子本身的定义,它用于测量图像的二阶导数。...拉普拉斯突出显示包含快速强度变化的图像区域,与 Sobel 和 Scharr 算子非常相似。而且,就像这些运算符一样,拉普拉斯通常用于边缘检测。...这里的假设是,如果图像包含高方差,则存在广泛的响应,包括边缘类和非边缘类,代表正常的焦点图像。但是,如果方差非常低,则响应的分布很小,表明图像中的边缘非常小。

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

    python+opencv 实现图像人脸检测及视频中的人脸检测

    下载HAAR与LBP数据 2. opencv相关知识 二、python+opencv实现人脸检测 1. 图像单人脸检测 2. 图像多人脸检测 3. 视频中人脸检测 4....下载HAAR与LBP数据 人脸检测的常见步骤如下,如果想要将人脸准确地检测出来,需要通过建立人脸模型,获取准确区分人脸的分类器,这里我们使用网上公开的扩展包或已经训练好的分类器。...中人脸检测的一个级联分类器,既可以使用 Haar 特征,也可以使用 LBP 特征。...以 Haar 特征分类器为基础的对象检测技术是一种非常有效的技术,它是基于机器学习且使用大量的正负样本训练得到分类器。...自己进行简单测试时也会发现,人物动作、视频中镜头切换过快、背景变化等因素,可能会造成对视频中人脸检测不准确。 4.

    1.5K20

    基于OpenCV的图像梯度与边缘检测!

    为了检测边缘,我们需要检测图像中的不连续性,可以使用图像梯度来检测不连续性。但是,图像梯度也会受到噪声的影响,因此建议先对图像进行平滑处理。 本文目录: 1....边缘检测的一般标准包括: 以低的错误率检测边缘,也即意味着需要尽可能准确的捕获图像中尽可能多的边缘。 检测到的边缘应精确定位在真实边缘的中心。...图像中给定的边缘应只被标记一次,并且在可能的情况下,图像的噪声不应产生假的边缘。 为了满足这些要求,Canny使用了变分法。...Canny检测器中的最优函数使用四个指数项的和来描述,它可以由高斯函数的一阶导数来近似。 在目前常用的边缘检测方法中,Canny边缘检测算法是具有严格定义的,可以提供良好可靠检测的方法之一。...接下来使用边缘检测的算子(如Roberts,Sobel,Scharr等)来计算图像中的水平、垂直和对角方向的梯度。得到水平和垂直方向的一阶导数值,由此便可以确定像素点的梯度的大小和方向 。

    4.7K21

    使用Python和OpenCV检测图像中的多个亮点

    本文来自光头哥哥的博客【Detecting multiple bright spots in an image with Python and OpenCV】,仅做学习分享。...今天的博客文章是我几年前做的一个关于寻找图像中最亮点的教程的后续。 我之前的教程假设在图像中只有一个亮点你想要检测... 但如果有多个亮点呢?...如果您想在图像中检测多个亮点,代码会稍微复杂一点,但不会太复杂。不过不用担心:我将详细解释每一个步骤。 看看下面的图片: ? 在这幅图中,我们有五个灯泡。...我们的目标是检测图像中的这五个灯泡,并对它们进行唯一的标记。 首先,打开一个新文件并将其命名为detect_bright_spot .py。...下面我提供了一个GIF动画,它可视化地构建了每个标签的labelMask。使用这个动画来帮助你了解如何访问和显示每个单独的组件: ? 然后第15行对labelMask中的非零像素进行计数。

    4.7K10

    使用 OpenCV 进行图像中的性别预测和年龄检测

    人们的性别和年龄使得识别和预测他们的需求变得更加容易。 即使对我们人类来说,从图像中检测性别和年龄也很困难,因为它完全基于外表,有时很难预测,同龄人的外表可能与我们预期的截然不同。...应用 在监控计算机视觉中,经常使用年龄和性别预测。计算机视觉的进步使这一预测变得更加实用,更容易为公众所接受。由于其在智能现实世界应用中的实用性,该研究课题取得了重大进展。...实施 现在让我们学习如何使用 Python 中的 OpenCV 库通过相机或图片输入来确定年龄和性别。 使用的框架是 Caffe,用于使用原型文件创建模型。...time from google.colab.patches import cv2_imshow 第 2 步:在框架中查找边界框坐标 使用下面的用户定义函数,我们可以获得边界框的坐标,也可以说人脸在图像中的位置...下面的用户定义函数是 pipline 或者我们可以说是主要工作流程的实现,在该工作流程中,图像进入函数以获取位置,并进一步预测年龄范围和性别。

    2.1K20

    用 OpenCV 检测图像中各物体大小

    在任何一种情况下,我们的参考都应该以某种方式具有惟一的可识别性。 在本例中,我们将使用一个两角五分的美元硬币作为参考物体,并在所有示例中确保它始终是图像中最左的物体: ?...利用这个比率,我们可以计算图像中物体的大小。 基于计算机视觉的物体尺寸检测 既然我们知道「像素/度量」比率 ,就可以实现用于测量图像中物体大小的 Python 驱动程序脚本。...倘若轮廓区域足够大,我们在第 9-11 行计算图像的旋转边界框,特别注意使用 OpenCV 2.4 的 cv2.cv.BoxPoints 函数和 OpenCV 3 的 cv2.boxPoints 方法。...图 2:使用 OpenCV 、Python 、计算机视觉和图像处理技术测量图像中物体的大小。 上图所示,我们已经成功地计算出图像中每个物体的大小——我们的名片被正确地显示为 3.5 英寸 x 2英寸。...总结 在本篇博客中,我们学习了如何通过 Python 和 OpenCV 检测图像中的物体大小。

    4.1K10

    OpenCV图像处理中“投影技术”的使用

    问题引出 本文区分”问题引出“、”概念抽象“、”算法实现“三个部分由表及里具体讲解OpenCV图像处理中“投影技术”的使用,并通过”答题卡识别“”OCR字符分割”“压板识别”“轮廓展开分析”四个的例子具体讲解算法使用...在这样采集到的图像中,大量存在黑色的定位区块: ? 如果进一步定位,可以得到这样的结果: ? 如果做成连续图像 ? ?...在这波峰波谷中,存在着的“量化”结果,对应了答题卡中的定位关系 概念抽象 在前面的分析里,我们已经基本建立起“投影”的概念。...vup.push_back(i); if (vdate[i - 1] > 0 && vdate[i] == 0) vdown.push_back(i); } } 在具体使用过程中...在这样的OCR识别中,首先可以通过投影的方法,实现字符的分割。 2 . 压板识别 ? ? 在这样的项目中,同样可以通过投影的方法,获得各个压板的准确定位。 3、轮廓展开分析 ?

    1.5K20

    python+opencv 实现图像人脸检测及视频中的人脸检测

    下载HAAR与LBP数据 2. opencv相关知识 二、python+opencv实现人脸检测 1. 图像单人脸检测 2. 图像多人脸检测 3. 视频中人脸检测 4....下载HAAR与LBP数据 人脸检测的常见步骤如下,如果想要将人脸准确地检测出来,需要通过建立人脸模型,获取准确区分人脸的分类器,这里我们使用网上公开的扩展包或已经训练好的分类器。...():是OpenCV中人脸检测的一个级联分类器,既可以使用Haar特征,也可以使用LBP特征。...以Haar特征分类器为基础的对象检测技术是一种非常有效的技术,它是基于机器学习且使用大量的正负样本训练得到分类器。...自己进行简单测试时也会发现,人物动作、视频中镜头切换过快、背景变化等因素,可能会造成对视频中人脸检测不准确。 4.

    14.2K73

    使用 OpenCV 对图像进行特征检测、描述和匹配

    介绍 在本文中,我将讨论使用 OpenCV 进行图像特征检测、描述和特征匹配的各种算法。 首先,让我们看看什么是计算机视觉,OpenCV 是一个开源计算机视觉库。...用于识别图像的线索称为图像的特征。同样,计算机视觉的功能是检测图像中的各种特征。 我们将讨论 OpenCV 库中用于检测特征的一些算法。 1....特征检测算法 1.1 Harris角点检测 Harris角点检测算法用于检测输入图像中的角点。该算法有三个主要步骤。 确定图像的哪个部分的强度变化很大,因为角落的强度变化很大。...斑点检测 BLOB 代表二进制大对象。它指的是特定二值图像中具有共同属性的一组连接像素或区域。...这些区域是 OpenCV 中的轮廓,具有一些额外的特征,如质心、颜色、面积、均值和覆盖区域中像素值的标准差。

    3.4K41

    图像中的裂纹检测

    机器学习模型 我们想要建立一个机器学习模型,该模型能够对墙壁图像进行分类并同时检测异常的位置。为了达到这个目的需要建立一个有效的分类器。它将能够读取输入图像并将其分类为“损坏”或“未损坏”两个部分。...在最后一步,我们将利用分类器学到的知识来提取有用的信息,这将有助于我们检测异常情况。对于这个类任务,我们选择在Keras中重载VGG16来完成它。...如果小伙伴可以使用GPU,则培训非常简单。COLAB为我们提供了加快这一过程所需的武器。我们还使用了Keras提供的简单数据生成器进行图像增强。 最终,我们能够达到0.90的整体精度,还不错! ?...局部异常 现在我们要对检测出异常的图像进行一定的操作,使墙壁图像裂缝被突出。我们需要的有用信息位于顶层。因此我们可以访问:卷积层:上层是VGG结构,还有网络创建的更多重要功能。...,在该图像中,我已在分类为裂纹的测试图像上绘制了裂纹热图。

    1.6K40

    图像中的裂纹检测

    机器学习模型 我们想要建立一个机器学习模型,该模型能够对墙壁图像进行分类并同时检测异常的位置。为了达到这个目的需要建立一个有效的分类器。它将能够读取输入图像并将其分类为“损坏”或“未损坏”两个部分。...在最后一步,我们将利用分类器学到的知识来提取有用的信息,这将有助于我们检测异常情况。对于这个类任务,我们选择在Keras中重载VGG16来完成它。...如果小伙伴可以使用GPU,则培训非常简单。COLAB为我们提供了加快这一过程所需的武器。我们还使用了Keras提供的简单数据生成器进行图像增强。 最终,我们能够达到0.90的整体精度,还不错!...局部异常 现在我们要对检测出异常的图像进行一定的操作,使墙壁图像裂缝被突出。我们需要的有用信息位于顶层。因此我们可以访问:卷积层:上层是VGG结构,还有网络创建的更多重要功能。...,在该图像中,我已在分类为裂纹的测试图像上绘制了裂纹热图。

    31710

    使用OpenCV测量图像中物体的大小

    本文来自光头哥哥的博客【Measuring size of objects in an image with OpenCV】,仅做学习分享。...“单位像素”比率 为了确定图像中对象的大小,我们首先需要使用参考对象执行“校准”(不要与内在/外在校准混淆)。...在任何一种情况下,我们的引用都应该以某种方式是唯一可识别的。 在这个例子中,我们将使用0.25美分作为我们的参考对象,在所有的例子中,确保它总是我们图像中最左边的对象。...使用这个比率,我们可以计算图像中物体的大小。 用计算机视觉测量物体的大小 现在我们了解了“像素/度量”比率,我们可以实现用于测量图像中对象大小的Python驱动程序脚本。...如果轮廓不够大,我们舍弃该区域,认为它是边缘检测过程中遗留下来的噪声(第4和5行)。 如果轮廓区域足够大,我们将计算图像的旋转包围框(第8-10行)。

    3.3K20

    使用OpenCV测量图像中物体之间的距离

    本文来自光头哥哥的博客【Measuring distance between objects in an image with OpenCV】,仅做学习分享。.../ 前两篇文章: 使用Python和OpenCV顺时针排序坐标 使用OpenCV测量图像中物体的大小 已经完成了测量物体大小的任务,今天进行最后一部分:计算图片中物体之间的距离。...上篇我们讨论了如何使用参考对象来测量图像中对象的大小。 这个参考对象应该有两个重要的特征,包括: 我们知道这个物体的尺寸(以英寸、毫米等表示)。 它很容易在我们的图像中被识别出来(根据位置或外观)。...给定这样一个参考对象,我们可以使用它来计算图像中对象的大小。 今天,我们将结合本系列前两篇来计算对象之间的距离。 计算物体之间的距离与计算图像中物体的大小算法思路非常相似——都是从参考对象开始的。...当我们的图像被模糊后,我们应用Canny边缘检测器来检测图像中的边缘,然后进行膨胀+腐蚀来缩小边缘图中的缝隙(第7-9行)。

    2.4K30

    用python和opencv检测图像中的条形码

    概述 在日常生活中,经常会看到条形码的应用,比如超市买东西的生活,图书馆借书的时候。。。 那么这些东西是如何做到准确检测出条形码的位置呢?...这就是今天要介绍的内容了 这篇博文的目标是演示使用计算机视觉和图像处理技术实现条形码的检测。...我们将使用numpy进行数字处理,argparse用于解析命令行参数,cv2进行opencv绑定。 然后我们将设置命令行参数。...我们这里只需要一个开关,即 --image,它是我们图像的路径,其中包含我们想要检测的条形码。...中提供了相应的接口,可以很容易地找到图像中的最大轮廓,如果我们正确地完成了图像处理步骤,它应该会对应于条形码区域。

    3.4K40

    使用OpenCV测量图像中物体之间的距离

    本文来自光头哥哥的博客【Measuring distance between objects in an image with OpenCV】,仅做学习分享。.../ 前两篇文章: 使用Python和OpenCV顺时针排序坐标 使用OpenCV测量图像中物体的大小 已经完成了测量物体大小的任务,今天进行最后一部分:计算图片中物体之间的距离。...上篇我们讨论了如何使用参考对象来测量图像中对象的大小。 这个参考对象应该有两个重要的特征,包括: 我们知道这个物体的尺寸(以英寸、毫米等表示)。 它很容易在我们的图像中被识别出来(根据位置或外观)。...给定这样一个参考对象,我们可以使用它来计算图像中对象的大小。 今天,我们将结合本系列前两篇来计算对象之间的距离。 计算物体之间的距离与计算图像中物体的大小算法思路非常相似——都是从参考对象开始的。...当我们的图像被模糊后,我们应用Canny边缘检测器来检测图像中的边缘,然后进行膨胀+腐蚀来缩小边缘图中的缝隙(第7-9行)。

    5.4K40

    android studio 使用 jni 编译 opencv 完整实例 之 图像边缘检测!从此在andrid中自由使用 图像匹配、识别、检测

    当时觉得,要实现这样一个东西,肯定没现成的API 可供使用,第一时间想到的 无疑就是opencv,这个拥有一套强大的图像处理函数的库,它的开发语言主要是C++,但是,也有 jar 包可供android开发使用...,如果单单是使用里面已经写好了的效果的话,肯定是不能完成图像匹配的。        ...cpp文件中的 头文件 opencv2/opencv.hpp 找不到。...,可以直接使用 cmd 进行编译;       ndk 为 android-ndk-r10d(强烈建议使用 r9 或 r10 系列,因为这两个能在 cmd 中编译出 .so),r10d 能够支持的 android...你可以在 as 的 cmd 中或者 系统的 cmd框中实现编译,首先使用命令进入到当前的 jni 文件夹的 目录,例如,我的是  D:asproject/JniDemo/app/main/jni,然后使用命令

    6.2K50

    使用 OpenCV 替换图像的背景

    技术实现 使用 OpenCV ,通过传统的图像处理来实现这个需求。 方案一: 首先想到的是使用 K-means 分离出背景色。...大致的步骤如下: 将二维图像数据线性化 使用 K-means 聚类算法分离出图像的背景色 将背景与手机二值化 使用形态学的腐蚀,高斯模糊算法将图像与背景交汇处高斯模糊化 替换背景色以及对交汇处进行融合处理...相近颜色替换背景的效果.png 于是换一个思路: 使用 USM 锐化算法对图像增强 再用纯白色的图片作为背景图,和锐化之后的图片进行图像融合。 图像锐化是使图像边缘更加清晰的一种图像处理方法。...基于 USM 锐化的算法可以去除一些细小的干扰细节和噪声,比一般直接使用卷积锐化算子得到的图像锐化结果更加真实可信。 int main() { Mat src = imread("....融合后的效果.png 三. 总结 其实,我尝试过用 OpenCV 多种方式实现该功能,也尝试过使用深度学习实现。目前还没有最满意的效果。后续,我会更偏向于使用深度学习来实现该功能。

    2.8K30
    领券