导航:首页 > 编程语言 > pythonopencvmask

pythonopencvmask

发布时间:2025-02-28 00:47:36

python,如何实现图片中特定区域模糊

使用Python可以很方便地实现图片中特定区域的模糊。下面是一个简单的示例代码,可以实现对图片中指定区域的高斯模糊:

import cv2
# 读取图片
img = cv2.imread('test.jpg')
# 指定模糊区域
x, y, w, h = 100, 100, 200, 200
roi = img[y:y+h, x:x+w]
# 对模糊区域进行高斯模糊
blur = cv2.GaussianBlur(roi, (25, 25), 0)
# 将模糊后的区域复制回原图
img[y:y+h, x:x+w] = blur
# 显示结果
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
在这段代码中,我们首先使用OpenCV库读取了一张图片。然后,我们指定了一个矩形区域,该区域的左上角坐标为(x, y),宽度为w,高度为h。接着,我们使用cv2.GaussianBlur函数对该区域进行高斯模糊,模糊半径为(25, 25)。最后,我们将模糊后的区域复制回原图,并显示结果。
需要注意的是,这段代码中的模糊区域是一个矩形,如果需要对任意形状的区域进行模糊,可以使用掩模(mask)来实现。具体实现方法可以参考OpenCV官方文档。

Ⅱ 目标跟踪(5)使用 Opencv 和 Python 进行对象跟踪

在本教程中,我们将学习如何基于 Opencv 和 Python 实现对象跟踪。

首先必须明确目标检测和目标跟踪有什么区别:

我们将首先讨论对象检测,然后讨论如何将对象跟踪应用于检测。

可能有不同的应用,例如,计算某个区域有多少人,检查传送带上有多少物体通过,或者计算高速公路上的车辆。

当然,看过本教程后,您会很容易地想到数以千计的想孙腔没法应用于现实生活或可能应用于工业。

在本教程中,我们将使用 3 个文件:

首先我们需要调用highway.mp4文件并创建一个mask:


正如您在示例代码中看到的,我们还使用了 函数,该函数返回背景比率(background ratio),然后创建mask。

mask可视化结果:

但是,如您所见,图像中有很多噪点。因此,让我们通过删除所有较小的元素来改进提取,并将我们的注意力集中在大于某个面积的对象上。


使用 OpenCV 的cv2.drawContours函数绘制轮廓,我们得到了这个结果。

就本教程而言,分析整个窗口并不重要。我们只对计算在某个点通过的所有车辆感兴趣,因此,我们必须定义一个感兴趣的区域 ROI 并仅在该区域应用mask。


结果可视化如下:

函数 cv2. 是在开始时添加的,没有定义参数,现在让我们看看如何进一步改进我们的结果。history是第一个参数,在这种情况下,它设置为 100,因为相机是固定的。varThreshold改为 40,因为该值越低,误报的可能性就越大。在这种情况下,我们只对较大的对象感兴趣。


在继续处理矩形之前,我们对图像进行了进一步的清理。为此,阈值函数就派上用场了。从我们的mask开始,我们告诉它我们只想显示白色或黑色值,因此通过编写254, 255,只会考虑 254 和 255 之间的值。

然后我们将找到的对象的坐标插入到 if 条件中并绘制矩形


这是最终结果:

我们现在只需导入和集成跟踪功能。


一旦创建了对象,我们必须获取边界框的每个位置并将它们插入到单个数组中。

通过在屏幕上显示结果,您可以看到所有通过 ROI 的通道是如何被识别的,则纳以及它们的位置是如何插入到特定的数组中的。显然,识别的摩托车越多,我们的数组就越大。

现在让我们将带圆行有位置的数组传递给tracker.update()。我们将再次获得一个包含位置的数组,但此外,将为每个对象分配一个唯一的 ID。

从代码中可以看出,我们可以使用 for 循环分析所有内容。此时我们只需要绘制矩形并显示车辆 ID。

在图像中,您可以看到结果


main.py


从视频中也可以看到,我们已经获得了我们在本教程开始时设置的结果。

但是,您必须将其视为练习或起点,因为关于这个主题有很多话要说,而本教程的目的只是让您了解对象跟踪的原理。

如果你想将 Object Tracking 集成到你的项目中,你应该使用更可靠和先进的对象检测方法,以及跟踪方法。

完整代码地址:私信“333”直接获取或者“链接”

Ⅲ 【Python学习蝴蝶书】第六章 图像变换15-距离变换

距离变换专为二值单通道图像设计,前景为非零,背景为零。此操作可识别并勾勒出前景形状的核心结构。

在Python中,可使用cv2.distanceTransform函数实现距离变换。

函数参数如下:

src:输入图像,单通道二值8位图像。

distanceType:距离类型,opencv提供多种计算方法,包括垂直、水平、对角线以及跳跃增量。

maskSize:可选3或5,需与distanceType搭配使用,也可自定义。

dst:输出图像,8位无符号整型或32位浮点型,单通道,尺寸与src相同。

dstType:输出图像类型,可为8位无符号整型或32位浮点型。

示例演示:多实例操作有助于深入理解距离变换原理。

Ⅳ 10 个 Python 图像编辑工具

以下提到的这些 Python 工具在编辑图像、操作图像底层数据方面都提供了简单直接的方法。

-- Parul Pandey

当今的世界充满了数据,而图像数据就是其中很重要的一部分。但只有经过处理和分析,提高图像的质量,从中提取出有效地信息,才能利用到这些图像数据。

常见的图像处理操作包括显示图像,基本的图像操作,如裁剪、翻转、旋转;图像的分割、分类、特征提取;图像恢复;以及图像识别等等。Python 作为一种日益风靡的科学编程语言,是这些图像处理操作的最佳选择。同时,在 Python 生态当中也有很多可以免费使用的优秀的图像处理工具。

下文将介绍 10 个可以用于图像处理任务的 Python 库,它们在编辑图像、查看图像底层数据方面都提供了简单直接的方法。

scikit-image 是一个结合 NumPy 数组使用的开源 Python 工具,它实现了可用于研究、教育、工业应用的算法和应用程序。即使是对于刚刚接触 Python 生态圈的新手来说,它也是一个在使用上足够简单的库。同时它的代码质量也很高,因为它是由一个活跃的志愿者社区开发的,并且通过了 同行评审(peer review)。

scikit-image 的 文档 非常完善,其中包含了丰富的用例。

可以通过导入 skimage 使用,大部分的功能都可以在它的子模块中找到。

图像滤波(image filtering):

使用 match_template() 方法实现 模板匹配(template matching):

在 展示页面 可以看到更多相关的例子。

NumPy 提供了对数组的支持,是 Python 编程的一个核心库。图像的本质其实也是一个包含像素数据点的标准 NumPy 数组,因此可以通过一些基本的 NumPy 操作(例如切片、 掩膜(mask)、 花式索引(fancy indexing)等),就可以从像素级别对图像进行编辑。通过 NumPy 数组存储的图像也可以被 skimage 加载并使用 matplotlib 显示。

在 NumPy 的 官方文档 中提供了完整的代码文档和资源列表。

使用 NumPy 对图像进行 掩膜(mask)操作:

像 NumPy 一样, SciPy 是 Python 的一个核心科学计算模块,也可以用于图像的基本操作和处理。尤其是 SciPy v1.1.0 中的 scipy.ndimage 子模块,它提供了在 n 维 NumPy 数组上的运行的函数。SciPy 目前还提供了 线性和非线性滤波(linear and non-linear filtering)、 二值形态学(binary morphology)、 B 样条插值(B-spline interpolation)、 对象测量(object measurements)等方面的函数。

在 官方文档 中可以查阅到 scipy.ndimage 的完整函数列表。

使用 SciPy 的 高斯滤波 对图像进行模糊处理:

PIL (Python Imaging Library) 是一个免费 Python 编程库,它提供了对多种格式图像文件的打开、编辑、保存的支持。但在 2009 年之后 PIL 就停止发布新版本了。幸运的是,还有一个 PIL 的积极开发的分支 Pillow ,它的安装过程比 PIL 更加简单,支持大部分主流的操作系统,并且还支持 Python 3。Pillow 包含了图像的基础处理功能,包括像素点操作、使用内置卷积内核进行滤波、颜色空间转换等等。

Pillow 的 官方文档 提供了 Pillow 的安装说明自己代码库中每一个模块的示例。

使用 Pillow 中的 ImageFilter 模块实现图像增强:

OpenCV(Open Source Computer Vision 库)是计算机视觉领域最广泛使用的库之一, OpenCV-Python 则是 OpenCV 的 Python API。OpenCV-Python 的运行速度很快,这归功于它使用 C/C++ 编写的后台代码,同时由于它使用了 Python 进行封装,因此调用和部署的难度也不大。这些优点让 OpenCV-Python 成为了计算密集型计算机视觉应用程序的一个不错的选择。

入门之前最好先阅读 OpenCV2-Python-Guide 这份文档。

使用 OpenCV-Python 中的 金字塔融合(Pyramid Blending)将苹果和橘子融合到一起:

SimpleCV 是一个开源的计算机视觉框架。它支持包括 OpenCV 在内的一些高性能计算机视觉库,同时不需要去了解 位深度(bit depth)、文件格式、 色彩空间(color space)之类的概念,因此 SimpleCV 的学习曲线要比 OpenCV 平缓得多,正如它的口号所说,“将计算机视觉变得更简单”。SimpleCV 的优点还有:

官方文档 简单易懂,同时也附有大量的学习用例。

文档 包含了安装介绍、示例以及一些 Mahotas 的入门教程。

Mahotas 力求使用少量的代码来实现功能。例如这个 Finding Wally 游戏 :

ITK (Insight Segmentation and Registration Toolkit)是一个为开发者提供普适性图像分析功能的开源、跨平台工具套件, SimpleITK 则是基于 ITK 构建出来的一个简化层,旨在促进 ITK 在快速原型设计、教育、解释语言中的应用。SimpleITK 作为一个图像分析工具包,它也带有 大量的组件 ,可以支持常规的滤波、图像分割、 图像配准(registration)功能。尽管 SimpleITK 使用 C++ 编写,但它也支持包括 Python 在内的大部分编程语言。

有很多 Jupyter Notebooks 用例可以展示 SimpleITK 在教育和科研领域中的应用,通过这些用例可以看到如何使用 Python 和 R 利用 SimpleITK 来实现交互式图像分析。

使用 Python + SimpleITK 实现的 CT/MR 图像配准过程:

pgmagick 是使用 Python 封装的 GraphicsMagick 库。 GraphicsMagick 通常被认为是图像处理界的瑞士军刀,因为它强大而又高效的工具包支持对多达 88 种主流格式图像文件的读写操作,包括 DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM、TIFF 等等。

pgmagick 的 GitHub 仓库 中有相关的安装说明、依赖列表,以及详细的 使用指引 。

图像缩放:

边缘提取:

Cairo 是一个用于绘制矢量图的二维图形库,而 Pycairo 是用于 Cairo 的一组 Python 绑定。矢量图的优点在于做大小缩放的过程中不会丢失图像的清晰度。使用 Pycairo 可以在 Python 中调用 Cairo 的相关命令

Pycairo 的 GitHub 仓库 提供了关于安装和使用的详细说明,以及一份简要介绍 Pycairo 的 入门指南 。

使用 Pycairo 绘制线段、基本图形、 径向渐变(radial gradients):

以上就是 Python 中的一些有用的图像处理库,无论你有没有听说过、有没有使用过,都值得试用一下并了解它们。

via: https://opensource.com/article/19/3/python-image-manipulation-tools

作者: Parul Pandey 选题: lujun9972 译者: HankChow 校对: wxy

阅读全文

与pythonopencvmask相关的资料

热点内容
择吉日用什么app 浏览:335
安卓转苹果王者什么时间完成 浏览:812
linux文本编码格式 浏览:663
浙江阿特拉斯压缩机上门维修 浏览:627
自己创建的mc服务器崩溃怎么办 浏览:158
什么叫加密方法 浏览:203
linux时钟调度 浏览:763
光盘加密文件怎么设置 浏览:765
程序员头痛图 浏览:255
redis二级缓存源码 浏览:711
游资大咖指标源码 浏览:485
c4d的配置文件夹怎么改位置 浏览:412
和平精英服务器超时是什么意思 浏览:609
怎么查看工商银行卡绑定了哪些app 浏览:159
linux调度程序 浏览:486
格力空调的压缩机是哪里的 浏览:153
常见的对称和非对称密码算法 浏览:247
javat方法 浏览:519
怎么代理快手app极速版推广 浏览:216
构成线的源码 浏览:745