16.放射变换之图像平移
cv2.warpAffine(src,M,dsize,flags,mode,value)
1234567891011121314151617181920#!/usr/bin/env python# -*- coding: UTF-8 -*-"""@Project :Opencv学习 @File :放射变换之图像平移.py@IDE :PyCharm @Author :咋@Date :2023/1/12 22:06 """import cv2import numpy as npimage = cv2.imread("Handsome.jpg")image = cv2.resize(image,(640,480))# 定义变换矩阵M= np.float32([[1,0,200],[0,1,0]])# 进行图像变化warp_img = cv2.warpAffine(image,M,dsize = (640,480)) # dsize 是输出图像的大小cv2.imshow("rot ...
16.顺序查找法
概念最基本的查找技术,过程: 从表中的第一个(或最后一个)记录开始,逐个进行记录的关键字和给定值比较,若某个记录的关键字和给定值相等,则查找成功,找到所查的记录,如果直到最后一个(或第一个)记录,其关键字和给定值比较都不等时,则表示没有查到记录,查找不成功。
代码实现12345678def search(alist,target): for i in alist: if target == i: print("找到目标元素!") return 0 else: print("没有找到目标元素!") return 0
总结顺序查找法是最简单也是最常用的一种查找的方法。
15.图像翻转与旋转
图像翻转cv2.flip(src,flipCode)
图像旋转cv2.rotate(img,rotateCode)
12345678910111213141516171819202122#!/usr/bin/env python# -*- coding: UTF-8 -*-"""@Project :Opencv学习 @File :图像翻转与旋转.py@IDE :PyCharm @Author :咋@Date :2023/1/12 21:47 """import cv2import numpy as npimage = cv2.imread("Handsome.jpg")image = cv2.resize(image,(640,480))# 图像翻转flip_img = cv2.flip(image,1) # 如果翻转90°,可能会出现长宽不匹配无法拼接的情况cv2.imshow("flip_img",np.hstack((image,flip_img)))# ...
15.归并排序
概念归并排序(Merge sort)是采用分治法的一个非常典型的应用。归并排序的思想就是先递归分解数组,再合并数组。将数组分解最小之后,然后合并两个有序数组,基本思想是比较两个数组的最前面的数,谁小就先取谁,取了后相应的指针就向后移一位。然后再比较,直至一个数组为空,最后把另一个数组的剩余部分复制过来即可。
算法步骤先分再合:
时间复杂度
最优时间复杂度:O(nlogn)
最坏时间复杂度:O(nlogn)
稳定性:稳定
程序实现12345678910111213141516171819202122232425262728293031def Merge_sort(alist): """ 主要思想就是分治法,先拆分再合并 整个框架是递归算法,既包括拆解成一个一个的列表,也包列表的缝合 以为[5,1,3,2,8,7,6,4]例,拆解成[5],[1],[3],[2],[8],[7],[6],[4] 第一次合并成[1,5],[2,3],[7,8],[4,6] 第二次合并成[1,2,3,5],[4,6,7,8] 第三次合 ...
14.resize用法
cv2.resize(src,dsize[,dst[,fx,[fy[,interpolation]]]])
之前同一图片大小的时候用的numpy切割,会造成图像的部分的损失,而现在用resize的话,可以保证图像一样大小,且画面不损失。12345678910111213141516171819#!/usr/bin/env python# -*- coding: UTF-8 -*-"""@Project :Opencv学习 @File :resize.py@IDE :PyCharm @Author :咋@Date :2023/1/12 21:26 """import cv2import numpy as nptest = cv2.imread("image.jpg")image = cv2.imread("Handsome.jpg")test = cv2.resize(test,(640,480))image = cv2.resize(image,(640,48 ...
14.快速排序
概念快速排序(Quicksort),又称为交换排序,通过一趟排序将要排序的数据分割为独立的两部分。假设要排序的列表是A[0]…A[N-1],首先任意选取一个数据(通常选用列表的第一个数)作为基准数据,一般我们都选择第一个数作为基准数据,然后将所有比它小的数都放到它的左边,所有比它大的数都放到它的右边,这个过程称为快速排序。值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变化。
算法步骤
设置两个low、high,排序开始的时候:low=0,high=N-1
以第一个列表元素作为基准数据,赋值给mid,即mid=A[0]
从high开始向前搜索,即由后开始向前搜索(high–),找到第一个小于mid的值A[high],将A[high]和A[low]的值交换
从low开始向后搜索,即向前开始向后搜索(low++),找到大于mid的A[low],将A[low]和A[high]的值交换。
重复第3、4步,直到low=high;
时间复杂度
最优时间复杂度:O(nlogn) #每次分成两半,要分lo ...