21.高斯滤波
高斯函数是符合高斯分布(也叫正态分布)的数据的概率密度函数
给定sigma将坐标代入下面的公式即可计算出卷积核的值,还要除以权重得到的是高斯核的模板cv2.GaussianBlur()
sigma越大,平滑效果越明显
ksize越大,平滑效果越明显123456789101112131415161718#!/usr/bin/env python# -*- coding: UTF-8 -*-"""@Project :Opencv学习 @File :高斯滤波.py@IDE :PyCharm @Author :咋@Date :2023/1/13 20:00 """import cv2import numpy as npimage = cv2.imread("Handsome.jpg")image = cv2.resize(image,(640,480))# 高斯滤波gaus_img = cv2.GaussianBlur(image,(5,5),1.5)cv2.imshow(" ...
20.方盒滤波和均值滤波
方盒滤波cv2.boxFilter()
ksize:卷积核大小
相当于均值滤波123456789101112131415161718#!/usr/bin/env python# -*- coding: UTF-8 -*-"""@Project :Opencv学习 @File :方盒滤波和均值滤波.py@IDE :PyCharm @Author :咋@Date :2023/1/13 19:54 """import cv2import numpy as npimage = cv2.imread("Handsome.jpg")image = cv2.resize(image,(640,480))# 方盒滤波box_img = cv2.boxFilter(image,-1,(5,5),normalize = True)cv2.imshow("box_img",np.hstack((image,box_img)))cv2.waitKey(0)cv2.destroyAll ...
19.卷积
图片卷积之前的csdn博客:https://blog.csdn.net/weixin_63866037/article/details/127150062图像卷积就是卷积核在图像上按行滑动遍历像素时不断的相乘求和的过程,卷积核一般都是奇数
步长
步长就是卷积核在图像上移动的步幅
padding
从上面例子中我们发现,卷积之后图片的长宽会变小.如果要保持图片大小不变,我们需要在图片周围填充0。padding指的就是填充的0的圈数.
我们可以通过公式计算出需要填充的0的圈数
奇数原因:
cv.filter2D(src,ddepth,kernel[,dst[,anchor[,delta[,borderType]]]])
1234567891011121314151617181920#!/usr/bin/env python# -*- coding: UTF-8 -*-"""@Project :Opencv学习 @File :卷积.py@IDE :PyCharm @Author :咋@Date ...
18.仿真变换之透视变换
透视变换就是将一种坐标系变换成另一种坐标系,简单来说就是将一张”斜的”图片变正。M = cv2.getPerspectiveTransform(crc,dst)
获取透视变化的变换矩阵,需要4个点,即图片的4个点
对于透视变换来说,M是一个3*3的矩阵
cv2.warpPerspective(img,M,(输出尺寸))
123456789101112131415161718192021#!/usr/bin/env python# -*- coding: UTF-8 -*-"""@Project :Opencv学习 @File :仿真变换之透视变换.py@IDE :PyCharm @Author :咋@Date :2023/1/13 19:05 """import cv2import numpy as npimage = cv2.imread("Handsome.jpg")image = cv2.resize(image,(640,480))src = np.float ...
17.放射变化之获取变换矩阵
之前在放射变化之图像平移有一个变化矩阵M,之前我们是自定义的,cv2里面也给我们定义了APIM = cv2.getRotationMatrix2D(center,angle,scale)img = cv2.warpAffine(img,M,dsize,flags,mode,value)
1234567891011121314151617181920#!/usr/bin/env python# -*- coding: UTF-8 -*-"""@Project :Opencv学习 @File :放射变化之获取变换矩阵.py@IDE :PyCharm @Author :咋@Date :2023/1/13 18:33 """import cv2import numpy as npimage = cv2.imread("Handsome.jpg")image = cv2.resize(image,(640,480))# 由API计算MM = cv2.getRotation ...
17.二分查找法
概念二分查找(binary search)又称为折半查找,优点是比较次数少,查找速度快,平均性能好;缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。
算法步骤
首先,假设表中的元素是按升序排列的,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前后两个子表。
如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后移子表。
重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
算法实现12345678910111213141516171819def binary_search(alist,target): """ 非递归二分查找 :param alist: :param target: :return: True/False """ start = 0 end = len(alist)-1 while start ...