自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

记录学习过程

经验分享

  • 博客(190)
  • 资源 (17)
  • 收藏
  • 关注

原创 opencv-python基础篇目录(更新中2024-04-11)

【基础篇】opencv-python库 cv2.imread() 读取图片opencv-python库 cv2.imwrite() 保存图片opencv-python库 cv2显示图片opencv-python库 cv2 图形绘制 cv2.line()cv2.rectangle()cv2.circle()cv2.ellipse()cv2.polylines()cv2.putTextopencv-python库 cv2色彩空间转换 cv2.cvtColor()

2024-03-30 21:33:47 231 1

原创 Python学习笔记目录(不定时更新2024-04-12)

基础篇字符串(string)篇(一)字符串(string)篇(二)字符串(string)篇(三)字符串(string)篇(四)字符串(string)篇(五)列表(list)篇(一)列表(list)篇(二)字典(dict)篇(一)字典(dict)篇(二)元组(tuple)篇

2024-03-22 20:08:03 701

原创 PyTorch学习笔记目录(更新中)

PyTorch学习笔记目录基础函数篇PyTorch学习笔记之基础函数篇(一)TensorPyTorch学习笔记之基础函数篇(二)算子01PyTorch学习笔记之基础函数篇(三)算子02PyTorch学习笔记之基础函数篇(四)算子03PyTorch学习笔记之基础函数篇(五)随机值生成函数PyTorch学习笔记之基础函数篇(六)运算函数介绍PyTorch学习笔记之基础函数篇(七)基本数学运算PyTorch学习笔记之基础函数篇(八)线性代数运算更新中…

2024-03-15 22:22:55 556

原创 【C++之STL】015序列容器篇forward_list非更易型操作

在上面的示例中,我们首先创建了一个空的std::forward_list,然后使用empty()函数检查它是否为空,输出结果为"The list is empty.“。在上面的示例中,我们创建了一个空的std::forward_list容器,并使用max_size函数获取其最大容量,并将其打印到控制台上。swap() 成员函数是 std::forward_list 提供的一个成员函数,用于交换两个 forward_list 容器的元素。在C++中,std::forward_list 是一个单向链表容器。

2024-04-21 21:39:36 849

原创 【C++之STL】014序列容器篇forward_list的优缺点以及构造函数

优点。forward_list具有插入、删除表项速度快、消耗内存空间少的特点,因此被广泛用于排序算法1。缺点。forward_list只能向前遍历,不能在常量时间内随机访问任意成员,对成员的访问需要线性时间代价;存储链接信息需要消耗内存,特别是当包含大量的小规模成员时;forward_list出于效率考虑,有意不提供size()成员函数,获取forward_list所包含的成员个数需要用std::distance(_begin, _end)算法。

2024-04-21 07:02:06 558

原创 【C++之STL】013序列容器篇list特殊的更易型操作

std::list::merge 是 C++ 标准库中 std::list 容器的一个成员函数,它用于合并两个已排序的列表。std::list::splice 是 C++ 标准库中的 std::list 容器的一个成员函数,用于重新组织列表中的元素。移动语义: 在 C++11 及更高版本中,splice 提供了移动语义的重载版本,可以高效地将一个列表的所有元素移动到另一个列表。空列表: 如果将一个空列表的所有元素移动到另一个列表,或者移动一个空范围,则操作仍然有效,但不会有任何元素被移动。

2024-04-21 06:49:16 1133

原创 opencv-python库 cv2.matchTemplate()模板匹配

cv2.matchTemplate() 是 OpenCV 库中的一个函数,用于在大图像中查找与小图像(或称为模板)匹配的区域。

2024-04-15 21:21:22 1049

原创 【C++之STL】012序列容器篇list更易型操作

对于未排序的列表,如果你想删除所有等于给定值的元素,你可能需要首先对列表进行排序,或者使用 std::remove_if 算法配合 std::list::unique 和 std::list::erase。与 push_front() 函数类似,emplace_front() 函数在列表的开头插入一个新元素,但 emplace_front() 更高效,因为它直接在列表的前端构造元素,而不需要先创建一个临时对象然后再将其插入到列表中。在上面的示例中,我们首先创建了一个包含三个整数元素的 std::list。

2024-04-15 21:14:03 1112

原创 【C++之STL】011序列容器篇list非更易型操作

然而,请注意,即使std::swap被调用,对于std::list来说,它可能仍然会调用std::list的成员函数swap来实现交换,因为std::list的成员函数swap通常更高效。如果你需要在不检查空的情况下安全地访问元素,可以考虑使用std::list::begin()函数,它返回一个指向第一个元素的迭代器,然后在访问该迭代器之前检查它是否等于std::list::end(),这表示链表为空。在C++中,std::list的end()成员函数返回一个迭代器,该迭代器指向链表的“尾部之后”的位置。

2024-04-14 12:08:45 925

原创 【C++之泛型算法】018数值算法

如果序列中的元素类型与二元操作的结果类型不同,或者与初始值 init 的类型不兼容,你可能需要提供适当的类型转换或使用适当的类型别名来确保类型匹配。std::adjacent_difference 是 C++ 标准库中的一个泛型算法,用于计算一个序列中相邻元素的差(或其他二元操作的结果),并将这些差(或结果)存储在一个输出序列中。在这个例子中,我们使用了自定义的二元操作 std::minus() 作为乘法操作(计算两个元素的差),和 std::plus() 作为加法操作(计算累积和)。

2024-04-14 11:24:44 1009

原创 【C++之泛型算法】017已排序区间算法.md

std::set_union 返回一个指向输出范围末尾的迭代器,我们可以使用 std::distance 来计算实际合并了多少元素,并调整 v_union 的大小。最后,我们打印出合并后的向量。在 C++ 标准库中,std::equal_range 是一个泛型算法,用于在一个已排序的序列中查找一个值的范围,即所有与给定值相等的元素所在的序列区间。在 C++ 标准库中,std::set_union 是一个泛型算法,用于合并两个已排序的范围(序列)为一个新的已排序范围,并返回合并后范围的末尾迭代器。

2024-04-14 11:02:42 637

原创 【C++之泛型算法】016Heap算法

pop_heap 是 C++ 标准库 中提供的一个函数,用于从堆中移除并返回堆顶元素(即最大或最小元素,取决于堆的性质),然后重新调整堆以保持其性质。如果堆是使用 make_heap 创建的,则可以使用 pop_heap 来移除堆顶元素,并确保剩余的堆元素仍然保持堆的性质。然后,我们在向量的末尾添加一个新元素 10,并使用 push_heap 来重新调整堆,确保堆的性质得到维护。如果堆是使用 make_heap 创建的,则可以使用 push_heap 来在堆的末尾添加新元素,并确保堆的性质得到维护。

2024-04-14 07:52:23 865

原创 【C++之泛型算法】015排序算法

当元素类型不支持 < 操作符或需要自定义排序规则时,可以提供一个比较函数。// 降序排序return 0;输出:5 4 3 2 1当元素类型不支持 < 操作符或需要自定义排序规则时,可以提供一个比较函数。// 降序排序return 0;输出:5 4 3 2 1在这个例子中,我们使用了自定义的比较函数 myCompare 来实现降序排序,但 stable_sort 仍然保证了等价元素的相对顺序不变。// 降序排序// 对前 3 个元素进行部分排序,使用降序。

2024-04-13 21:17:12 639

原创 【C++之泛型算法】014变序型算法

std::reverse 是 C++ 标准库中的一个泛型算法,用于反转给定范围内元素的顺序。这个算法定义在 头文件中。以下是 std::reverse 的声明:std::reverse 接受两个双向迭代器 first 和 last,它们定义了要反转的元素范围。first 指向范围中的第一个元素,last 指向范围中的最后一个元素之后的位置。这个算法会原地(in-place)反转元素,不需要额外的存储空间。下面是一些使用 std::reverse 的例子:基本用法输出将会是:在数组上使用输出同样会

2024-04-13 09:07:37 965

原创 【C++之泛型算法】013移除型算法

与 std::remove() 和 std::remove_if() 不同,std::remove_copy() 并不改变源序列的大小,而是将不满足条件的元素复制到目标序列中,并返回目标序列的末尾迭代器。与 std::remove_if() 不同,std::remove_copy_if() 并不改变源序列的大小,而是将不满足条件的元素复制到目标序列中,并返回目标序列的末尾迭代器。与 std::remove() 不同的是,std::remove_if() 允许你指定一个自定义的条件来决定哪些元素应该被移除。

2024-04-13 09:05:40 1002

原创 【C++之泛型算法】012元素替换

在C++标准库中,std::replace_copy是一个泛型算法,它用于复制一个范围内的元素到另一个范围,同时替换满足特定条件的元素。这个 lambda 表达式检查一个数是否是偶数。在C++标准库中,std::replace_copy_if是一个泛型算法,它用于复制一个范围内的元素到另一个范围,同时仅替换满足特定条件的元素。在 C++ 中,替换容器(如 std::vector、std::list、std::string 等)中的元素,你可以使用标准库提供的泛型算法 std::replace。

2024-04-12 22:43:47 1131

原创 【C++之泛型算法】011赋值

generate() 接受一个输出迭代器(表示序列的开始位置),一个表示元素数量的迭代器(通常是一个表示结束位置的迭代器),以及一个生成器函数(或可调用对象),该函数或对象用于生成每个元素的值。与 fill_n() 不同,generate_n() 使用一个生成器函数(或可调用对象)来产生每个元素的值,而不是填充一个固定的值。此外,生成器函数也应该正确地处理任何可能的输入参数。std::fill 是一个非常有用的算法,尤其是当你需要初始化一个容器为特定值,或者需要快速将一个范围内的所有元素设置为同一个值时。

2024-04-12 22:42:39 786

原创 【C++之泛型算法】010元素互换

这两个序列可以是任何类型的迭代器(如 std::vector, std::list, std::array 等的迭代器)所表示的范围。在这个例子中,v1 和 v2 初始时分别包含 {1, 2, 3, 4, 5} 和 {-1, -1, -1, -1, -1}。调用 std::swap_ranges(v1.begin(), v1.end(), v2.begin()) 之后,v1 中的元素将被移动到 v2 中,而 v2 中的元素将被移动到 v1 中,因此两个向量的元素将被交换。

2024-04-12 22:41:20 274

原创 【C++之泛型算法】009转换和结合元素

在C++标准库中,std::transform算法有一个带有一个二元操作版本(binary operation version),它接受两个输入范围,并将这两个范围中的元素对应地应用二元操作,然后将结果存储到输出迭代器指向的位置。在C++标准库中,std::transform是一个泛型算法,它对给定范围内的每个元素执行一个指定的操作,并将结果存储到另一个容器中。总之,std::transform是一个强大的泛型算法,它允许你对容器中的元素执行自定义操作,并将结果存储到另一个容器中。

2024-04-12 22:39:52 385

原创 【C++之泛型算法】008搬移元素

在C++中,std::move是一个函数模板,它用于将对象转换为右值引用,从而允许进行移动语义操作。在上面的示例中,我们使用了std::move来将v1向量中的元素移动到v2向量。std::move本身并不是一个算法,而是一个工具,它允许你以移动而不是复制的方式使用泛型编程。当你想将一个对象从一个容器转移到另一个容器时,或者在对象不再需要其当前状态时,你可以使用std::move。此外,std::move通常与C++11引入的右值引用和移动语义一起使用,以实现更高效的资源管理和性能优化。

2024-04-12 22:35:06 247

原创 【C++之泛型算法】007复制元素

需要注意的是,std::copy_backward 在实际使用中并不常见,因为通常情况下我们会使用 std::copy 或 std::copy_n 来从源序列的开始复制到目标序列的开始。与 std::copy 和 std::copy_n 不同,std::copy_backward 是从源序列的末尾开始复制,一直到源序列的开始。与 std::copy 不同,std::copy_n 允许你指定要复制的元素的数量,而不是一直复制到输入范围的末尾。请确保目标序列有足够的空间来容纳源序列的元素,否则可能会发生溢出。

2024-04-12 22:33:14 524

原创 lambda表达式

Python中的lambda表达式,也称为匿名函数,是一种简洁的定义简单函数的方式。lambda函数可以接收任意数量的参数,但只能有一个表达式,该表达式的值就是这个函数的返回值。lambda表达式主要用于需要一个函数作为参数的场合,比如排序、过滤等。

2024-04-12 22:04:02 273

原创 【C++之泛型算法】006Fredicate用以检验区间

这个算法常用于配合 std::partition 或 std::stable_partition 使用,这些算法会重新排列序列,使得满足谓词的元素出现在不满足谓词的元素之前。注意,std::partition 和 std::partition_point 都不会保证划分点之后的元素满足谓词或不满足谓词,它们只保证划分点之前的元素都满足谓词。因此,当我们再次调用 std::is_partitioned 时,它返回 false,因为序列现在不能被单一划分点划分为两部分,使得划分点之前的所有元素都满足谓词。

2024-04-11 22:56:16 777

原创 【C++之泛型算法】005区间比较

在这个例子中,我们定义了一个名为 nearly_equal 的二元谓词,它接受一个整数 difference 作为构造函数的参数,并检查两个整数之间的差值的绝对值是否不超过 difference。std::mismatch 返回了一个 std::pair,其中第一个迭代器指向 vec1 中不匹配的元素,第二个迭代器指向 vec2 中不匹配的元素。程序输出这两个元素的位置和值。注意,std::equal 只比较元素的值,而不关心序列中元素的顺序或它们在内存中的位置。

2024-04-11 22:55:15 599

原创 【C++之泛型算法】004查找元素

在 C++ 中,std::find 是一个泛型算法,用于在序列(如数组、向量、列表等)中查找一个特定的值或满足特定条件的元素。该算法接受两个迭代器作为范围参数,以及要查找的值或条件,并返回一个指向找到的第一个匹配元素的迭代器。如果未找到匹配项,则返回尾后迭代器(end())。下面是 std::find 的详细用法:函数签名示例:查找特定值。

2024-04-11 22:53:53 790

原创 【C++之泛型算法】003最小值和最大值

在C++标准库中,std::min_element是一个泛型算法,用于找到序列中的最小元素。在这个例子中,std::min_element会遍历numbers向量,并返回一个指向最小元素(在这个例子中是1)的迭代器。在这个例子中,std::max_element会遍历numbers向量,并返回一个指向最大元素(在这个例子中是9)的迭代器。如果序列为空,std::min_element将返回尾后迭代器(end()),因此在解引用之前检查迭代器是否等于end()是一个好习惯,以避免访问空指针导致的未定义行为。

2024-04-11 22:52:49 532

原创 【C++之泛型算法】002元素计数

在这个示例中,std::count_if 的第三个参数是一个 lambda 函数,它定义了一个简单的条件:num % 2 == 0,用于判断一个整数是否是偶数。std::count_if 是 C++ 标准库 中的一个泛型算法,它用于计算满足特定条件的元素在序列中的数量。与 std::count 不同,std::count_if 接受一个谓词(即一个返回布尔值的函数或函数对象),用于定义哪些元素应被计数。std::count 可以用于任何类型的序列,只要序列中的元素可以与要查找的值进行比较。

2024-04-11 22:51:39 244

原创 【C++之泛型算法】001for_each

std::for_each 是 C++ 标准库中的一个算法,它用于对容器(如数组、向量、列表等)中的每个元素执行一个指定的操作。std::for_each 本身并不返回任何值,而是直接对原始容器进行修改。std::for_each 常用于需要对容器中的每个元素执行相同操作的场景,例如打印元素、修改元素的值等。在这个例子中,我们首先使用 std::for_each 打印出向量 numbers 中的每个元素。然后,我们再次使用 std::for_each 来修改每个元素的值,将其乘以 2。

2024-04-11 22:50:04 235

原创 【C++之STL】010序列容器篇list的优缺点以及构造和析构函数

C++的std::list容器是一个双向链表实现,它有一些独特的优点和缺点。下面我会列举一些主要的优点和缺点。优点:插入和删除的高效性:在std::list中的任何位置进行插入和删除操作都是常数时间复杂度O(1),这是因为它基于链表结构,不需要像数组或向量那样移动大量元素。动态大小:std::list可以动态地增长和缩小,不需要预先知道其大小。内存使用灵活:std::list通常比连续存储的容器(如std::vector)使用更多的内存,但它的内存使用更加灵活,因为它不需要连续的内存块。

2024-04-11 22:05:19 684

原创 opencv-python库 cv2.findContours()轮廓检测

在这个示例中,我们首先创建了一个简单的二值图像,然后使用 cv2.findContours() 查找轮廓,并使用 cv2.drawContours() 将轮廓绘制到原始图像上。最后,我们显示了包含轮廓的图像。cv2.findContours() 是 OpenCV 库中的一个函数,用于在二值图像中检测轮廓。这个函数会找到图像中所有连续的非零像素区域,并返回这些区域的轮廓。cv2.findContours() 函数返回三个值:修改后的图像(通常不关注这个返回值,因为输入图像会被修改)、轮廓列表和轮廓层次结构。

2024-04-10 22:35:27 1448

原创 opencv-python库 cv2.Canny()边缘检测

Canny边缘检测是一种经典的边缘检测算法,由John F. Canny在1986年提出,被广泛应用于计算机视觉和图像处理领域2。噪声抑制。首先,通过使用高斯滤波器对图像进行平滑处理,以去除图像中的噪声。计算梯度幅值和方向。使用Sobel算子计算图像中每个像素点的水平和垂直方向的梯度值。然后,根据梯度值计算每个像素点的梯度幅值和方向。非极大值抑制。在计算得到的梯度幅值图像上进行非极大值抑制,将边缘宽度变窄,使边缘更加细化和明确。双阈值处理。

2024-04-10 22:31:22 833

原创 lua bitset

【代码】lua bitset。

2024-04-10 21:53:08 138

原创 【C++之STL】009序列容器篇deque更易型操作

然而,如果deque是空的,调用pop_back将会导致未定义行为,因此在调用pop_back之前,通常应该检查deque是否为空,可以通过empty成员函数来完成这个检查。在C++中,emplace_back是std::deque(双端队列)容器的一个成员函数,用于在容器的尾部直接构造并添加一个元素。在C++中,emplace_front是std::deque(双端队列)容器的一个成员函数,用于在容器的开头直接构造并插入一个元素。最后,我们输出deque的当前内容,可以看到最后一个元素已经被删除。

2024-04-10 21:25:25 709

原创 【C++之STL】008序列容器篇deque非更易型操作

接着,我们从双端队列的尾部删除一个元素,然后再次调用 size() 函数,这次返回的大小为2,因为双端队列中现在只剩下两个元素。在C++中,std::deque的rend()成员函数返回一个逆向迭代器(reverse iterator),该迭代器指向容器中“第一个元素之前”的位置。与end()函数类似,cend()也不指向容器的最后一个元素,而是指向最后一个元素之后的位置,因此它也不能被解引用。在这个示例中,我们首先使用at()函数访问了索引为2的元素,这是有效的,并且我们输出了该元素的值。

2024-04-10 20:45:39 896

原创 【C++之STL】007序列容器篇deque的优缺点以及构造和析构函数

std::deque(双端队列)是C++标准库中的一个容器,它支持在两端进行高效的插入和删除操作。

2024-04-10 19:50:18 804

原创 【C++之STL】006序列容器篇vector插和移除元素

在这个例子中,原始的vector {1, 2, 3, 4, 5} 通过 resize(10, 100) 被调整到了10个元素的大小。然后,我们创建了一个std::vector类型的vector,并使用emplace_back在vector的末尾添加了一个MyClass的实例,通过直接传递构造函数的参数来就地构造这个实例。注意,如果你想要用特定的值来初始化新添加的元素,你可以给resize函数传递第二个参数,这个参数是一个值,用于初始化新添加的元素。因此,vector现在变为{1, 2, 3, 4, 5}。

2024-04-09 23:05:18 893

原创 【C++之STL】005序列容器篇vector迭代器

这是与end()方法的一个重要区别,end()返回的迭代器指向vector的最后一个元素之后的位置,同样也不能被解引用,但是在逻辑上它更接近vector的末尾。同样地,你也不能通过crend()返回的迭代器来修改vector中的元素,即使你尝试这样做,编译器也会阻止你,因为crend()返回的是常量反向迭代器。在C++中,std::vector的rend()成员函数返回一个指向vector的反向迭代器,该迭代器指向反向遍历中的“过去末尾”位置,也就是说,它指向最后一个元素之后的位置。因此,它不能被解引用。

2024-04-09 22:28:36 1033

原创 【C++之STL】004序列容器篇vector元素访问

在C++中,std::vector的at成员函数提供了一种访问元素的方法,同时它在索引越界时会抛出std::out_of_range异常,这有助于更安全地访问vector中的元素。接着,我们尝试在一个空vector上调用front(),并捕获了抛出的std::out_of_range异常。c[idx]是用于访问vector中元素的运算符,其中c是vector的变量名,idx是你要访问的元素的索引。在C++中,std::vector的back()成员函数用于访问vector中的最后一个元素。

2024-04-09 22:03:34 611

原创 类对象内置属性

Python 中的类对象具有一些内置属性,这些属性通常用于获取有关类的元信息或控制类的行为

2024-04-09 21:42:47 369

原创 【C++之STL】003序列容器篇vector赋值

在C++中,std::vector::assign 成员函数的一种常见用法是通过指定元素数量和要填充的值来替换向量中的所有元素。在C++中,std::vector(以及其他许多STL容器,如std::list, std::deque, std::string等)提供了一个swap成员函数,用于交换两个容器的内容。在这个例子中,std::swap(c1, c2)调用了std::swap的特化版本,该版本为std::vector类型定义了如何交换两个向量的内容。这对于性能敏感的代码来说是非常有用的。

2024-04-08 22:09:43 2481

JBT 7679-2008 螺旋输送机.pdf

JBT 7679-2008 螺旋输送机.pdf

2020-04-12

滚齿机速查挂轮软件2.1版本.zip

机械加工相关的 挂轮计算小程序

2020-04-11

渐开公法线4.2.0.exe

朋友开发的小程序 分享给大家,希望不要浪费了当年好友的辛苦

2020-04-11

渐开公法线4.3.0.exe

朋友开发的小程序 分享给大家,希望不要浪费了当年好友的辛苦

2020-04-11

渐开量柱测量距.exe

朋友开发的小程序 分享给大家,希望不要浪费了当年好友的辛苦

2020-04-11

渐开线齿轮尺寸1.2.2.exe

朋友开发的小程序 分享给大家,希望不要浪费了当年好友的辛苦

2020-04-11

圆弧公法线3.0.5.exe

朋友开发的小程序 分享给大家,希望不要浪费了当年好友的辛苦

2020-04-11

直线锥齿轮尺寸1.1.0.exe

朋友开发的小程序 分享给大家,希望不要浪费了当年好友的辛苦

2020-04-11

轴承各种承载寿命计算.xls

轴承各种承载寿命计算 轴承各种承载寿命计算 轴承各种承载寿命计算 轴承各种承载寿命计算 轴承各种承载寿命计算

2020-02-02

大数计算类.cpp

大数计算类.cpp

2015-06-03

Java6.0帮助文档.CHM

Java6.0帮助文档.CHM

2015-06-03

MFC类库详解.chm

MFC类库详解.chm

2015-06-02

W3school.chm

W3school.chm

2015-06-02

C++函数速查.chm

C++函数速查.chm

2015-06-02

C语言函数速查.chm

C语言函数速查.chm

2015-06-02

锥齿轮传动计算 -windows版本

锥齿轮传动计算2013B.zip

2013-12-07

滚齿机差动挂轮计算工具

滚齿机差动挂轮计算工具

2013-03-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除