- 博客(28)
- 收藏
- 关注
原创 可迭代对象__iter__(), __next__()
在 Python 中,迭代是指逐个访问容器(如列表、元组、集合、字典等)中的元素。为了实现迭代,我们需要使用可迭代对象和迭代器。
2023-07-10 20:26:45 235
原创 opencv中:特征点和角点的区别,以及的算法各自有哪些
是特征点的一种特殊类型,指的是在图像中具有明显角度变化的点。角点通常是两条边或曲线相交的位置,这些位置的灰度值在多个方向上都有显著变化。由于角点在不同方向上的梯度变化较大,它们在图像中具有独特性和区分性,常常被用作图像特征的重要组成部分。角点检测算法旨在自动识别和定位这些角点,以便在后续的图像处理和计算机视觉任务中使用。此外,还有其他许多特征点检测和角点检测算法,每种算法都有其优势和适用场景,选择合适的算法取决于具体的应用需求和性能要求。一种高速的角点检测算法,通过快速地检测像素周围的强度变化来定位角点。
2023-07-06 11:01:37 561
原创 opencv:形态学操作的原理和运用场景,及其代码示例(腐蚀、膨胀、开运算、闭运算、梯度运算、顶帽、黑帽)
将结构元素(结构元素可以类比卷积核)与图像进行逐像素的比较,只有当结构元素完全覆盖对应图像区域时,输出图像对应像素才为前景,否则为背景。将结构元素(结构元素可以类比卷积核)与图像进行逐像素的比较,只要结构元素与图像有任何一个相交的像素,输出图像对应像素即为前景,否则为背景。通过对原始图像与开运算结果的差异运算,得到图像中亮度较低的细节信息。通过对闭运算结果与原始图像的差异运算,得到图像中亮度较高的细节信息。闭运算可以填充图像中的小孔和断裂,连接邻近的区域,并保持物体的整体形状。### 6.顶帽运算。
2023-07-04 18:58:21 3236
原创 opencv中透视变换,cv2.findHomography() 和 cv2.getPerspectiveTransform()的区别
总结来说,cv2.findHomography() 更通用,可以处理任意形状的点对,而 cv2.getPerspectiveTransform() 更适用于矩形区域的透视变换。cv2.getPerspectiveTransform():它返回一个 3x3 的透视变换矩阵,该矩阵描述了一个平面上的四个点到另一个平面上的四个点之间的透视变换关系。cv2.getPerspectiveTransform():由于需要输入矩形的四个角点,因此主要用于进行基于矩形的透视变换,如纠正图像的倾斜、裁剪矩形区域等。
2023-07-03 15:03:47 3200
原创 opencv中 在特征点匹配代码举例,以及queryIdx和trainIdx的用法。
在特征点匹配中,queryIdx和trainIdx提供了特征点在不同图像中的对应关系,使我们能够在不同图像间建立联系并进行后续的操作,例如计算视角变换矩阵或进行图像配准等。换句话说,queryIdx是指示特征点在查询图像(图像A)中的位置,而trainIdx是指示特征点在训练图像(图像B)中的位置。这意味着特征点A是图像A中的第11个特征点(索引从0开始),而特征点B是图像B中的第6个特征点。2.在进行特征点匹配时,我们得到了一个匹配对,其中包含了两个特征点:特征点A和特征点B。
2023-07-03 10:03:56 1200 1
原创 opencv:Shi-Tomasi⻆点检测原理及其分步骤实现。让你更好理解Shi-Tomasi
2.对于每个像素点(x, y),计算其在 x 和 y 方向上的梯度(通常使用 Sobel 算子),得到梯度的幅值(A)和梯度的方向(B)。Shi-Tomasi 角点检测算法是一种改进的角点检测算法,它在 Harris 角点检测算法的基础上进行了优化。4.其中,w(x, y) 是一个窗口函数,用于加权计算局部区域的贡献。7.对所有像素点的角点响应度进行排序,选取排名前N的角点作为最终的角点结果。1.首先,对于给定的图像,需要将其转换为灰度图像。5.计算自相关矩阵M的特征值λ1和λ2。
2023-07-02 11:41:43 908 2
原创 opencv中 Harris角点检测的分步骤代码演示,让你更好的理解Harris角点检测
2、在 Harris 角点检测算法中,需要计算每个像素点的响应函数值。假设我们对于图像中的每个像素点(x, y),计算其在 x 和 y 方向上的梯度(通常使用Sobel算子),得到梯度的幅值(A)和梯度的方向(B)。4.对于每个像素点(x, y),计算自相关矩阵M的特征值λ1和λ2。其中,w(x, y) 是一个窗口函数,用于加权计算局部区域的贡献。5.最后,根据响应函数R的阈值进行角点的筛选。对于R大于阈值的像素点,认为是角点。1、首先,对于给定的图像,需要将其转换为灰度图像。
2023-07-01 17:56:51 304
原创 python 中np.squeeze的用法
当处理数组时,有时候我们希望将形状中维度为1的维度去除,使得数组更加紧凑。np.squeeze函数可以实现这个目的。
2023-06-30 18:18:52 2751 2
原创 opencv 中的透视变换及其应用举例
透视变换的映射原理基于线性变换和矩阵运算,通过透视变换矩阵将原始图像中的像素映射到目标图像中的对应位置,从而实现图像的透视变换。这种映射过程可以将图像投影到一个新的视角,**校正图像的倾斜,提取图像中感兴趣的区域等
2023-06-30 17:49:21 772
原创 【add_argument () 传入参数的两种方式参数】
1.首先找到Edit Configuretions。2.可以在Parameters中输入参数。3.输入自己的脚本和参数,用空格隔开。2.在终端中切换到自己所在的位置。比如我这里输入mul m。示例:以位置参数为例。
2023-06-29 16:28:57 509
原创 ValueError: not enough values to unpack (expected 3, got 2) 解决办法
导致这个问题的原因可能是版本不同,或函数参数的不同导致的
2023-06-27 10:05:30 2376 3
原创 opencv 中Canny边缘检测算法原理加每一个(分)步骤的代码演示
梯度幅值高于高阈值的像素被视为强边缘,低于低阈值的像素被视为弱边缘,位于两者之间的像素被视为可能的边缘。A ⾼于阈值 maxVal 所以是真正的边界点,C 虽然低于 maxVal 但⾼于 minVal 并且与 A 相连,所以也被认为是可能的边界点。:在梯度方向上,比较每个像素的梯度幅值与其相邻两个像素沿着梯度方向的梯度幅值。通过跟随弱边缘像素,并且与强边缘像素连接的方式来连接边缘,也就是根据弱边缘像素的位置,并且寻找与之相邻的强边缘像素来连接边缘。:对强边缘像素进行连接,形成连续的边缘线条。
2023-06-27 09:23:03 217 1
原创 opencv中 aplacian算子、Scharr和Sobel算子的API参数
dx: x方向的导数阶数,取0、1或-1。当dx取-1时,表示使用水平方向的一阶导数(即对x方向进行边缘检测),而dy使用默认值0,表示不进行垂直方向的边缘检测。ksize: Laplacian算子的卷积核大小,一般为奇数,默认为1。ksize: Sobel算子的卷积核大小,一般为奇数,默认为3。scale: 缩放因子,用于调整输出图像的强度,默认为1。delta: 加法常数,用于调整输出图像的亮度,默认为0。dy: y方向的导数阶数,取0、1或-1。dx: x方向的导数阶数,取0、1或-1。
2023-06-26 11:09:57 191 1
原创 opencv中 对‘彩色‘图片的腐蚀和膨胀!
彩色图片的腐蚀和膨胀效果并不好,会导致图片1.彩色偏移:由于腐蚀和膨胀操作会同时作用于图像的所有通道,可能会导致彩色通道之间的相对值发生变化,从而使图像出现颜色偏移的情况。
2023-06-25 21:26:59 1140 1
原创 jpg和png通道数上的区别
在编码过程中,亮度分量(Y)通常保留所有细节,而色度分量(Cb和Cr)则以较低的分辨率进行采样,从而实现对颜色信息的压缩。虽然JPEG支持存储单通道图像,但在实践中,单通道图像通常使用灰度图像的专用格式,如灰度JPEG(.jpeg)或灰度PNG(.png)来存储。RGBA图像:PNG还支持RGBA图像,具有4个通道(红色、绿色、蓝色和透明度),用于表示彩色图像以及透明度信息。RGB图像:大多数PNG图像是RGB图像,具有3个通道(红色、绿色和蓝色),用于表示彩色图像。
2023-06-25 17:07:17 3661
原创 torch.nn.functional中的函数和torch.nn中的函数的区别
如果你的激活函数只需要在前向传播中使用,那么使用torch.nn.functional中的激活函数更加简洁。如果你希望将激活函数作为模型的一部分,并与其他模块一起使用,那么使用torch.nn中的激活函数更加方便。
2023-06-23 19:30:24 1136
原创 TensorFlow和PyTorch都使用四维张量来表示输入数据
在深度学习中,TensorFlow和PyTorch都使用四维张量来表示输入数据,但它们的默认约定略有不同。1.在TensorFlow中默认情况下,输入数据的形状是(batch_size, height, width, channels),其中:batch_size表示批量大小,即一次训练或推断中输入的样本数量。height表示输入图像的高度。width表示输入图像的宽度。channels表示输入图像的通道数,通常为3(RGB图像)或1(灰度图像)。2.在PyTorch中默认情况下,输入数据的
2023-06-23 17:05:44 545 1
原创 【python中的*args和**kwargs】
这*args和**kwargs的两种写法相当与约定成俗,我们也可以把args和kwargs换成别的写法也是可以的。
2023-06-18 21:54:16 70 1
原创 TypeError: list indices must be integers or slices, not tuple
这个错误提示表明索引中出现了元组,但是列表只接受整数或切片作为索引。这个错误通常发生在使用Keras的K.cast函数时,可能是由于输入的input_shape不是一个整数或切片导致的。为了解决这个问题,您可以尝试将input_shape转换为整数或切片类型。您可以使用tf.shape函数获取input_shape的形状,并使用整数或切片索引来访问其元素。
2023-06-12 22:04:55 4086 1
原创 ImportError: cannot import name ‘text_encoding‘ from ‘io‘ (unknown location)
确保Python的安装路径正确添加到系统的环境变量中。在命令提示符中,使用echo %PATH%命令检查环境变量,确保其中包含Python的安装路径。确保只有你创建的虚拟环境,把其他一些东西删除,或者是一些你创建了虚拟环境又remove后的残留文件夹。在你的ANACONDA进入envs中。
2023-06-12 15:31:13 3251 3
原创 IOU(交并比)和NMS(非极大值抑制)及其代码实现
IOU它衡量了两个边界框(或区域)的重叠程度,通过计算它们的交集面积除以它们的并集面积来表示。NMS是一种常用的目标检测算法中的后处理步骤,用于抑制重复的边界框,从而提高检测结果的准确性和去除重叠的目标框。
2023-06-11 15:50:01 1193 1
原创 yolov1的损失函数和目标值的构建
1.从图中可以看出yolov1的损失都是误差的平方和损失,对于voc数据集他最后输出的是[7,7,30]的张量。[7, 7]表示特征图的尺寸,其中每个位置对应输入图像的一个区域。30包含两置信度和两个预测框,20个类别。2.从图中可以看出,损失函数分配了权重系数,通过为不同部分设置权重系数,可以控制它们在总体损失函数中的相对贡献。:不同的损失部分可能具有不同的重要性。:某些损失部分可能会引起训练的不稳定性。例如,在目标检测中,置信度损失可能更容易受到类别不平衡的影响。
2023-06-11 11:46:22 417 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人