OpenCV——4
13图像统计信息像素值统计-均值•cv.mean(src[, mask] ) ->retval
像素值统计-方差•cv.meanStdDev(src[, mean[, stddev[, mask]]]) ->mean, stddev
像素值统计-极值•cv.minMaxLoc(src[, mask]) ->minVal, maxVal, minLoc, maxLoc
•src表示输入图像,mask表示计算区域•mean, stddev, minVal, maxVal分别表示均值,标准方差,最小与最大•cv2.convertScaleAbs()函数通过线性变换将数据转为均值,然后转换成8位[uint8]每个通道分别计算均值和方差通过图像方差判断是否含有有效信息调整图像对比度的本质是调整图像之间的差值1234567891011121314151617import cv2import numpy as npimage = cv2.imread("123.jpg")cv2.imshow("demo1",image)bgr_m = cv2 ...
OpenCV——3
09滚动条操作Callback回调基本流程
引用举例:你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回调关联的事件,店员给你打电话叫做调用回调函数,你到店里去取货叫做响应回调事件。回答完毕。 (链接:https://www.zhihu.com/question/19801131)
先注册后使用
事件响应函数•typedef void(* cv::TrackbarCallback) (int pos//滑块位置, void *userdata//用户数据,可不写)
•完成事件响应函数的声明与实现
•def trackbar_callback (pos):
print(pos)
创建窗口函数•cv.namedWindow(winname [, flags]) -> None
•参数: winname表示窗口标题
•参数flags支持的flag有:
WINDOW_NOR ...
OpenCV——2
05 图像色彩空间转换常见的色彩空间:HSV、RGB、YCrCb
RGB色彩空间,设备独立
HSV色彩空间,对计算机友好,区分各种色彩
YCrCb, Y分量表示信息,CrCb可以被压缩
RGB是计算机显示器的标准支持色彩系统
RGB的取值范围0~255
HSV取值范围H(色调):0°~360°,S(饱和度):0~255,V(明度):0~255
从一个色彩空间转换到另外一个色彩空间要考虑:
信息传递与损失过程、可逆与不可逆
函数与参数
cv.cvtColor(src,code[,dst[,dstCn]])->dst
· src表示输入图像, 类型CV_8U、CV_32F
· code表示,
cv::COLOR_BGR2RGB = 4
cv::COLOR_BGR2GRAY = 6
cv::COLOR_GRAY2BGR = 8
cv::COLOR_BGR2HSV = 40
例:img2 = cv. ...
OpenCV——1
一、认识计算机视觉1.发展历史•最早追溯到老子小孔成像
•现代1966年MIT的马文·明斯基的学生实现PC链接摄像机,标志计算机视觉作为一门学科开始发展
•1982.马尔文发布《视觉》标志着CV正式成为一门学科
•1999.David Lowe 发表SIFT特征相关论文,OpenCV收录使用
•2001.V&J发表基于HAAR特征的实时人脸检测算法
•2005.HOG提出特征提取的行人检测算法
•2006.Pascal VOC数据集发布
•2012.AlexNet模型赢得ImageNet图像分类比赛冠军,展现出深度学习在CV领域的应用前景
•未来世界离不开CV
2.主要任务早期主要研究领域为重建
2012后,受深度学习影响重建与感知快速发展
目标:通过图灵测试
3.应用场景•自动驾驶/辅助驾驶
•计算机视觉-AI + 机构/工业质检检测
…
•形成全场景的行业应用
二、计算机视觉框架1.计算机视觉框架•Matlab . 追溯到1970年 . 支持图像处理
•Matrox mil . 1993年发布第一个版本
•Halcon . 追溯到1996 . CV领域应用最多,主流框架
• ...
Ubuntu22.04前期优化
Ubuntu前期优化一、系统设置1.换源“软件和更新”——“Ubuntu软件”——“下载自”——改为“位于 中国的服务器”
2.显卡驱动待更新。。。
3.界面优化自己随心设置
“设置”——“外观”——“桌面图标“:关闭“显示个人文件夹
“设置”——“外观”——“Dock”:打开自动隐藏Dock,关闭面板模式,屏幕上的位置(底部)
“设置”——“鼠标和触摸板”——“触摸板”:打开自然滚动,调整触摸板速度,打开双指滚动
4.关闭更新“软件和更新”——“更新”:根据自己的想法调整
5.关闭Dock栏显示其他分区磁盘(若出现此情况)“磁盘”——选择对应磁盘及分区——“其他分区选项”——“编辑挂载选项”——关闭“用户会话默认值”——取消勾选“系统启动时挂载”、“显示用户界面”——确定即可
6.设置区域与语言“设置”——“区域与语言”——“管理已安装的语言”——会提示语言支持没有安装完整,点击安装,完成后重启即可。
7.终端设置自己随心设置
开启终端快捷键:Ctrl + Alt + T
打开终端——“设置——”“配置文件首选项”——点击配置文件首选项,”内置方案“选择“Linux控制台“, ...
Ubuntu22.04安装
Ubuntu系统安装更新于2024.4.18准备内存至少为4G的U盘,最好8G及以上
1.准备工作(1)下载Ubuntu镜像:下载Ubuntu桌面系统 | Ubuntu
(2)提前从存储分出空白区域
下载工具:Diskgenius,下载后解压运行即可参考(下面步骤看不懂时看这个链接):[Diskgenius教程](https://www.diskgenius.cn/help/partspliting.php)慎重选择要分出空间的分区,右键该分区,点击『拆分分区』,『分区后部的空间』即为分给ubuntu的空间,同时注意将其设置为『保持空闲』,完成后在界面左上角有类似『保存修改』选项,点击保存。(3)(仅windows有BitLocker进行这步操作,且必须)如何知道自己电脑是否开启BitLocker:查看Diskgenius查看是否有链接中第一张图所示(分区有加密字样):Diskgenius
①可按照链接方法解锁②还可以参考
(4)下载U盘启动盘制作工具:
官网:Rufus - 轻松创建USB启动盘
or网盘链接: https://pan.baidu.com/s/1B ...
ThoroughPyTorch——5
PyTorch生态与部署 1.PyTorch生态简介https://datawhalechina.github.io/thorough-pytorch/第八章/index.html
PyTorch的强大很大程度上取决于它的生态。
(1)torchvision
torchvision.datasets *
包含了一些我们在计算机视觉中常见的数据集
torchvision.models *
提供一些预训练模型
torchvision.tramsforms *
用于数据增强和处理
torchvision.io
视频、图片和文件的 IO 操作(读取、写入、编解码)
torchvision.ops
提供了许多计算机视觉的特定操作
torchvision.utils
提供了一些可视化的方法
(2)PyTorchVideoPytorchVideo 提供了加速视频理解研究所需的模块化和高效的API。它还支持不同的深度学习视频组件,如视频模型、视频数据集和视频特定转换,最重要的是,PytorchVideo也提供了model zoo,使得人们可以使用各种先进的预训练 ...
ThoroughPytorch——4
第七章:PyTorch可视化第七章:PyTorch可视化 — 深入浅出PyTorch (datawhalechina.github.io)
7.1 可视化网络结构使用torchinfo来可视化网络结构
torchinfo的安装
1234# 安装方法一pip install torchinfo # 安装方法二conda install -c conda-forge torchinfo
torchinfo的使用
只需使用torchinfo.summary(),
必需的参数分别是model,input_size[batch_size,channel,h,w]
更多参数可以参考documentation
12345# 例import torchvision.models as modelsfrom torchinfo import summaryresnet18 = models.resnet18() # 实例化模型summary(resnet18, (1, 3, 224, 224)) # 1:batch_size 3:图片的通道数 224: 图片的高宽
torchinfo提供了更加详 ...
ThoroughPytorch——3
第六章:PyTorch进阶训练技巧DataWhale在线文档:https://datawhalechina.github.io/thorough-pytorch/第六章/index.html
6.1 自定义损失函数在科学研究中,我们往往会提出全新的损失函数来提升模型的表现,此时我们需要自己设计损失函数。
(1)以函数方式定义123def my_loss(output, target): loss = torch.mean((output - target)**2) return loss
(2)以类方式定义在以类方式定义损失函数时,我们如果看每一个损失函数的继承关系我们就可以发现Loss函数部分继承自_loss, 部分继承自_WeightedLoss, 而_WeightedLoss继承自_loss,_loss继承自 nn.Module。我们可以将其当作神经网络的一层来对待,同样地,我们的损失函数类就需要继承自nn.Module类。
例:Dice Loss [ DSC = \frac{2|X∩Y|}{|X|+|Y|} ]
123456789101112131415c ...
ThoroughPytorch——2
PyTorch模型定义DataWhale:https://datawhalechina.github.io/thorough-pytorch/
一、模型定义
Module 类是 torch.nn 模块里提供的一个模型构造类 (nn.Module),是所有神经⽹网络模块的基类,我们可以继承它来定义我们想要的模型;
PyTorch模型定义应包括两个主要部分:各个部分的初始化(__init__);数据流向定义(forward)
基于nn.Module,我们可以通过Sequential,ModuleList和ModuleDict三种方式定义PyTorch模型。
1. Sequential 可更加简单地定义前向计算为简单串联各层的模型。
接收子模块或其有序字典作为参数逐一添加作为实例以进行前向计算。
灵活性差,不适合加入外部输入。
123456import torch.nn as nnnet = nn.Sequential( nn.Linear(784, 256), nn.ReLU(), nn.Linear(256, 10), ...




