opencv图像处理详细讲

传统的计算机视觉框架:

SimpleCV

BoofCV

Dlib

JavaCV

深度学习计算机视觉框架

Caffe

Tensorflow

Pytorch

Paddlepaddle

Keras

深度视觉计算机视觉框架

OpenVINO

TensorRT

onnxruntime

Deepface

YOLO/DarkNet

mmdetection

Paddle-detection/seg/ocr

当前业界主流框架应用

计算机视觉方向:Halkon/VisionPro/Mil/OpenCV

深度学习方向: tensorflow/pytorch/paddlepaddle + openvino/tensorRT/onnxruntime

opencv应用

        import cv2 as cv   导入opencv支持

        import numpy as np    导入Numpy支持

        imread函数  读取图像

        imshow函数   显示图像

        加载图像的通道顺序

计算机图像理解

        

   

图像理解

        灰度图像 - 单通道

        彩色图像 - 三通道

图像色彩空间转换

        

图像色彩空间

         RGB色彩空间,设备独立

         HSV色彩空间,对计算机友好,区分各种色彩

         YCrC吧, Y分量表示信息, CrCb可以被压缩

         RGB是计算机显示器的标准支持色彩系统,RGB的取值范围0~255

         HSV取值范围H: 0~180, SV:0~255

图像色彩转换

        从一个色彩空间转换到另外一个色彩空间

        信息传递与损失

        过程可逆与不可逆

图像对象的创建与赋值

图像对象属性

        图像宽高 image.shape

        图像深度 image

        图像数据类型 image.dtype

        图像通道 image.shape

        如何加载不同通道的图像

OpenCV-Python支持的数据类型

        np.uint8

        np.float32

        np.int32

        np.int64

图像像素

理解像素

        像素实际大小:dpi x inches = 像素总数

        术语dpi: 每英寸的点数目, 96dpi - 针对打印

        术语ppi: 每英寸的像素数目 - 针对图像分辨率

灰度图像排序(单通道)

彩色图像排序(三通道)

像素访问与遍历

        像素便利本质就是numpy数组访问

        假设变量image

        获取图像维度信息: image.shape

        图像访问像素: image【row, col】

        图像赋值像素: image【row,  col】 = (b,g,r)

       

像素读写:

        读写像素(彩色图像):

        b ,g , r = image [ row, col ]

        image[row, col] = ( 255-b, 255-g, 255-r )

        

        读写像素(灰度图像):

        pv = image【row,col】

        image【row, col】 = 255 - pv

像素算术操作

        加法

        img1【row, col】 + img2[ row, col ] = dst[row, col ]

Mask参数

创建窗口函数

        

调整图像亮度

        RGB值表示亮度

        RGB(0,0,0)黑色        RGB(255,255,255)白色

        

通道分离与合并

        RGB/HSV彩色通道分离为单独通道

        争对不同通道使用不同阈值提取mask

        提取其中一个通道的信息

像素值统计-均值

        均值 - 单通道为例

        图像均值(5+3+4+9+6+7+8+2+3)/ 9 = 5.222

        图像应用mask之后的均值 (3+6+2)/3 = 3.6666

        

像素值统计-方差

方差用来衡量数据的离散程度,方差越大,数据的离散程度越高。

说明数据的分布越分散,像素值之间的差异性更大,图像的对比度可能会更加明显。方差较大的图像可能包含更多的细节和变化。

计算文本区域大小

函数计算文本区域大小函数

getTextSize (

        text,    #表示文本信息

        fontFace, #表示字体类型

        fontScale,  #表示字体大小

        thickness   #表示线宽

python中的随机数函数

Numpy中的随机函数

randiom.randint(low,high=None,size=None,dtype=int)

Low表低值, high表示高值, size表示维度, dtype表示类型

np.random.randint(256)

np.random.randint(0,256)  表示生成0~255个随机数,类型是int

随机噪声图

cv.randn(dst, mean, stddev) 生成目标图像dst、噪声均值mean、噪声方差stddev

数据转换

        Imread读入默认是uint8, 转换为float32,通过imshow显示之前, 必须归一化到【0~1】之间。

图像几何变换

        cv.warpAffine(src, M, dsizel dstl, flags[borderModel, borderValue]])-> dst

src表示输入图像,M表示2x3变换矩阵,dsize表示目标图像dst的大小,支持平移变换、放缩变换、旋转变换。

变换矩阵

放缩矩阵

        

旋转矩阵

        

获取旋转

旋转矩阵获取cv..getRotationMatric2D

Center表示旋转中心,angle表示度数,大于零表示逆时针旋转,scale表示放缩尺度大小

视频标准与格式

图像直方图

直方图均衡化

        作用:提升对比度、灰度图像支持

        作为一种图像增强技术,其目的是通过重新分布图像的像素值,使得图像的直方图更均匀,从而增强图像的对比度,使图像更加清晰和易于分析。这可以有效地增强图像的细节和纹理,改善图像的视觉效果。

        例如在医学图像处理中用于增强影像质量和凸显病变部位,还可以用于改善监控摄像头拍摄的图像质量,提高图像的清晰度和对比度。此外,直方图均衡化也常用于数字图书馆、印刷和出版领域的图像处理,以及在计算机视觉、模式识别和机器学习等领域中作为图像预处理的一项重要技木。

图像卷积

        卷积核也可以称为权重        

        均值卷积的核心思想是通过取周围像素的平均值来替代当前像素的值,从而减轻图像的噪声和细节,使得图像变得更加平滑。均值卷积通常用于图像降噪、模糊化处理以及图像特征提取等方面。

           

卷积核跟锚定位置

        

        锚定位置在想处理中是指用于确定某个特定位置的参考点或标记点。在目标检测任务中,算法通常会先在图像中生成一些候选框(bounding boxes),然后通过将这些候选框与真实目标框进行比较,来确定目标的位置。

        在目标跟踪任务中,锚定位置可以用于跟踪目标在视频序列中的运动轨迹。通过在每一帧图像中锚定位置,算法可以准确地跟踪目标地位置变化,实现目标的连续跟踪。也可适用于图像配准

卷积的边缘填充

        在进行卷积操作时,通常会涉及到边缘填充问题。边缘填充是指在及逆行卷积操作时,为了保持输出特征图大小与输入特征图大小一致,需要在输入特征图的边缘进行填充操作。

  • 零填充(Zero Padding):在边缘填充位置填充值为0的像素。
  • 恒定填充(Constant Padding):在边缘填充位置填充固定的常数值。
  • 复制填充(Replication Padding):在边缘填充位置复制邻近像素的值进行填充。

卷积模糊函数

高斯模糊

均值模糊与高斯模糊

        高斯模糊,图像中间的权重系数最大

像素重映射

        把像素点P(x,y)重新银蛇到一个新的位置

        像素重映射 (Pixel Remapping)是指将图像中的像素值根据一定的规则重新映射或转换的过程。在图像处理中,像素重映射常用于图像增强、颜色校正、对比度调整。

  • 灰度级映射:将图像的灰度级从一个范围映射到另一个范围,用于增加图像的对比度和亮度。
  • 伽马校正:通过非线性的伽马函数将输入图像的像素值转换,常用于调整图像的亮度和对比度。
  • 颜色空间转换:将图像从一种颜色空间转换到另一种颜色空间,如RGB到HSV、RGB到Lab等。
  • 直方图均衡化:通过调整图像的直方图来增加图像的对比度和视觉效果。

         通过像素重映射,可以改变图像的外观、增强图像特征、调整图像质量等,从而使图像更符合人眼的感知。

图像二值化

        0与1

全局二值化

        全局二值化是图像处理中一种常用的阈值分割方法,其基本思想是将图像转换为二值图像,即将图像中的像素值根据一个全局阈值进行划分为黑色和白色两种像素值。这种方法适用于图像中的目标和背景的对比度比较大的情况。

全局二值化有以下几个方面:

        1、将彩色的图像转换为灰度图像

        2、选择一个合适的全局阈值,通常可以使用一些自适应的方法(如大津法)

        3、将灰度图像中像素值大于阈值的像素设置为白色,像素值小于等于阈值的设置为黑色

适用于一些简单的图像分割任务。然而,对于一些复杂图像中目标和背景对比度较小的情况,全局二值化可能无法很好地分割目标。在这种情况下,可以考虑使用局部二值化或其他图像分割方法来处理。

自适应二值化

        自适应二值化(Adaptive Thresholding)是一种图像处理技术,与全局二值化相比,它能够根据每个像素的局部特性选取不同的阈值,从而更好地分割图像中的目标物体。自适应二值化可以在处理光照不均匀、背景复杂、目标区域尺寸变化等情况下取得更好的效果。

        在自适应二值化中,通常将图像分割成多个区域,每个区域内的像素根据其局部特性选取不同的阈值进行二值化。常见的自适应二值化方法包括:

  1. 局部均值法:计算每个像素周围邻域的平均灰度值,以此作为阈值进行二值化。
  2. 局部加权平均法:对每个像素周围邻域内的像素进行加权求和,再根据加权和确定阈值进行二值化。
  3. 局部高斯加权法:使用高斯滤波器对图像进行平滑处理,然后通过计算平滑后的图像的局部均值作为阈值进行二值化。

接下来讲解实现步骤:

  1. 将彩色图像转换为灰度图像:通过将RGB通道的值进行加权平均来实现,得到每个像素的灰度值。

  2. 将图像分割成多个局部区域:将图像分割成多个大小相等或不等的局部区域,每个区域内的像素将根据其局部特性选取不同的阈值进行二值化。通常可以使用滑动窗口的方式或其他分割方法来实现这一步骤。

  3. 计算每个局部区域的阈值:对于每个局部区域,可以采用不同的方法来计算阈值。常见的方法包括局部均值法、局部加权平均法和局部高斯加权法。具体选择哪种方法可以根据实际情况和需求进行调整。

  4. 对每个局部区域进行二值化:根据计算得到的阈值,对每个局部区域内的像素进行二值化处理。将像素灰度值大于局部阈值的像素设置为白色,小于等于局部阈值的像素设置为黑色,得到局部二值化的结果。

  5. 合并局部二值化的结果:将所有局部区域的二值化结果合并起来,得到最终的自适应二值化图像。

opencv DNN模块

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/7037.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重识来伊份:抢滩首店经济,休闲零食品牌的“面子”和“里子”

前不久,苹果静安零售店的首秀频频登上热搜。 这背后,不仅仅因为它是中国大陆最大的苹果旗舰店,还在于它的设计融入了时尚又古典的上海街区,吸引了众多市民拍照打卡。今年3月至5月,上海会持续举办“首发上海”春季系列…

电能计量抄表系统

1.电能计量抄表系统的概念和作用 电能计量抄表系统是一种前沿的自动化控制,主要运用于电力行业的电费计算及管理。它通过远程数据采集和处理,实时监控系统用户的用电状况,取代了传统的手工抄水表方法,降低了成本,降低…

五、VGA 叠加图像原理和实现(十字光标)

前言:该案例在VGA项目:联合精简帧双fifosobel算法 实现VGA显示项目的基础上进行改动。 要求:通过串口助手把 198x198 的十字光标图像二进制数据传递给 FPGA 板卡,FPGA 板 卡接收到后存储到 Ram 中用于 VGA 叠加显示。 预期效果展…

020、Python+fastapi,第一个Python项目走向第20步:ubuntu 24.04 docker 安装mysql8集群+redis集群(一)

系列文章 pythonvue3fastapiai 学习_浪淘沙jkp的博客-CSDN博客https://blog.csdn.net/jiangkp/category_12623996.html 前言 docker安装起来比较方便,不影响系统整体,和前面虚拟环境有异曲同工之妙,今天把老笔记本T400拿出来装了个ubuntu24…

小程序激励广告视频多次回调问题

1.问题 2. 激励视频使用及解决方案 官方文档 let videoAd null; // 在页面中定义激励视频广告 Page({/*** 页面的初始数据*/data: {},/*** 生命周期函数--监听页面加载*/onLoad(options) {let that this;// 创建激励视频广告实例if (wx.createRewardedVideoAd) {videoAd w…

知识库工具:付费的HelpLook AI知识库比免费的牵牛易帮好在哪里

在知识管理的领域中,选择合适的知识库工具对于企业来说很重要。市面上有很多知识库产品,有付费的和免费的,但是还是有很多企业会选择使用付费的,而不是免费的。这是为什么呢?这就是今天要探讨的问题,下面就…

Android虚拟机机制

目录 一、Android 虚拟机 dalvik/art(6版本后)二、Android dex、odex、oat、vdex、art区别 一、Android 虚拟机 dalvik/art(6版本后) 每个应用都在其自己的进程中运行,都有自己的虚拟机实例。ART通过执行DEX文件可在设…

什么是B2B SaaS公司?

前言 在当今数字化时代,B2B SaaS公司正在以惊人的速度崛起,成为企业界的一股重要力量。但是,对于许多人来说,B2B SaaS究竟是什么,以及它如何影响商业生态,可能还是一片未知。本文将简要介绍B2B SaaS公司的…

Python+Selenium 实现自动化测试

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号【互联网杂货铺】,回复 1 ,免费获取软件测试全套资料,资料在手,涨薪更快 安装selenium 打开命令控制符输入:pip install -U …

网络安全----小程序渗透测试反编译审计漏洞

一、什么是反编译审计漏洞 微信小程序反编译渗透测试是一种针对微信小程序的安全测试方法,是在通过对小程序源代码的反编译和分析,发现潜在的安全漏洞,并对其进行渗透测试以验证其安全性的一种方法。 二、测试流程及其步骤 反编译小程序&a…

C#知识|如何在WinForm窗体中实现分割线绘制?

哈喽,你好啊,我是雷工! 在上位机UI设计中经常会用到分割线,用来分割界面区域。 像在KingSCADA、杰控、昆仑通态、WinCC、组态王、力控、易控等组态软件中非常简单,有现成的划线操作,选中相关工具直接绘制即…

颠覆传统?「一束光子,两种频率」的量子纠缠!

在最新的研究中,科学家们开发了一种革命性的量子纠缠方式——“频域光子数路纠缠”(frequency-domain photon number-path entanglement)。这一量子物理学的重大进展涉及到一个创新性的工具:频率分束器(frequency beam…

jmeter后置处理器提取到的参数因为换行符导致json解析错误

现象: {"message":"JSON parse error: Illegal unquoted character ((CTRL-CHAR, code 10)): has to be escaped using backslash to be included in string value; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Ill…

开源之夏 2024 学生报名通道现已正式开启!奖金都是12000元,冲啊!!!

Apache SeaTunnel作为数据集成平台的先行者,数以千计的开发者活跃在这个开源社区,我们深知开源社区就像是“众人拾柴火焰高”,希望有更多的青年力量能参与到社区的建设中来! 在前段时间,我们不仅成功入选中科院软件所主…

[C++]VS2022配置cplex12.8过程中出现ext未声明标识符语法错误:标识符“ImplClass“

这个时候,主要的是看报错,根据报错,去网上寻找解决办法。因为这个时候,代码可能并没有任何错误,只不过你是VS2022,老师是VS2017或者其他版本。不同的版本之间代码运行问题,如果你换成cplex12.10…

【前端】输入时字符跳动动画实现

输入时字符跳动动画实现 在前端开发中,为了提升用户体验,我们经常需要为用户的交互行为提供即时的反馈。这不仅让用户知道他们的操作有了响应,还可以让整个界面看起来更加生动、有趣。本文将通过一个简单的例子讲解如何实现在用户输入字符时…

速卖通自养号测评海外环境:成本、步骤、技巧全掌握

相信不少涉足跨境业务的企业和商家都对速卖通耳熟能详。作为当下炙手可热的跨境电商平台,速卖通在国内电商市场渐趋饱和的背景下,吸引了众多国内卖家的目光。他们纷纷入驻速卖通,希望借助这一平台的力量,成功打通跨境业务渠道。然…

重新下载 ant design pronp

一、项目重建 要删除前端代码并 重新下载Ant Design Pro,您可以按照以下步骤操作: 删除项目文件夹:找到您的Ant Design Pro项目文件夹,将其完全删除。清除npm缓存:在命令行中运行npm cache clean --force以清除npm的缓…

1.python爬虫爬取视频网站的视频可下载的源url

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、爬取的源网站二、实现代码总结 一、爬取的源网站 http://www.lzizy9.com/ 在这里以电影片栏下的动作片为例来爬取。 可以看到视频有多页,因此需要…

XYCTF2024 RE ez unity 复现

dll依然有加壳 但是这次global-metadata.dat也加密了,原工具没办法用了,不过依然是可以修复的 a. 法一:frida-il2cpp-bridge 可以用frida-il2cpp-bridge GitHub - vfsfitvnm/frida-il2cpp-bridge: A Frida module to dump, trace or hijac…