一, 二值化函数
功能:
用于对图像进行二值化处理
参数:
cv2.threshold(输入你的图像所对应的灰度图,
阈值:是浮点还是整数取决予图像的数据类型
最大值;高于阈值的像素值,
阈值类型:cv2.THRESH_BINARY、cv2.THRESH_BINARY_INV、 cv2.THRESH_TRUNC、cv2.THRESH_TOZERO 和 cv2.THRESH_TOZERO_INV
)
返回值:
二值化的返回值有2个
1:实际使用的阈值
2:二值化的图像
注意:调用二值化函数使用的图像一定要是灰度化后的图像
应用:
import cv2
img = cv2.imread("./women.png.")
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret, img_threshold = cv2.threshold(img_gray,120,255,cv2.THRESH_BINARY)
print(ret)
cv2.imshow("img",img)
cv2.imshow("img_gary",img_gray)
cv2.imshow("img_threshold",img_threshold)
cv2.waitKey(0)
可以通过修改阈值呈现不同的效果
1.使用cv2.THRESH_BINARY
2.使用cv2.THRESH_BINARY_INV
3.使用THRESH_TRUNC
二.自适应二值化函数 功能、参数、返回值、应用
功能:
与二值化算法相比,自适应二值化更加适合用在明暗分布不均的图片
参数:
cv2.adaptiveThreshold(输入你的图像所对应的灰度图,
最大值,#通常为255
自适应方法,#cv2.ADAPTIVE_THRESH_MEAN_C | cv2.ADAPTIVE_THRESH_GAUSSIAN_C
二值化类型,
核的大小:最好是奇数
最终的阈值:从计算出的平均值或加权和中减去的常数
)
返回值:
自适应二值化的图像
应用:
import cv2
img = cv2.imread("./women.png.")
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
img_adapt = cv2.adaptiveThreshold(img_gray,
255,
cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY,
5,
3
)
cv2.imshow("img",img)
cv2.imshow("img_gary",img_gray)
cv2.imshow("img_threshold",img_adapt)
cv2.waitKey(0)
可以通过修改阈值和自适应方法呈现不同的效果
1.cv2.ADAPTIVE_THRESH_GAUSSIAN_C
2.cv2.ADAPTIVE_THRESH_MEAN_C
三,腐蚀函数
功能:
将二值化图像中的白色部分尽可能的压缩
参数:
cv2.erode(读取图片,
kernel: 结构元素,核,
iterations: 迭代次数,次数越多效果越明显
)
kernel:
cv2.getStructuringElement(cv2.MORPH_ELLIPSE,
(3, 3)大小
)
返回值:
腐蚀后的图像
应用:
import cv2
img = cv2.imread("./123.png.")
kernal = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(3,3))
img_erode = cv2.erode(img,kernal)
cv2.imshow("img",img)
cv2.imshow("img_gary",img_erode)
cv2.waitKey(0)
四,膨胀函数
功能:
将二值化图像中的白色部分尽可能的扩张
参数:
cv2.dilate(
读取图片,
kernel: 结构元素,核,
iterations: 迭代次数,次数越多效果越明显
)
返回值:
膨胀后的图片
应用:
import cv2
img = cv2.imread("./123.png.")
kernal = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(3,3))
img_dilate = cv2.dilate(img,kernal)
cv2.imshow("img",img)
cv2.imshow("img_gary",img_dilate)
cv2.waitKey(0)
五,仿射变换函数
功能:
用于对图像进行仿射变换(Affine Transformation)的函数,仿射变换包括平移、旋转、缩放以及剪切等操作。
参数:
cv2.warpAffine(输入的图像,
变换矩阵,:通过其他函数(如 cv2.getRotationMatrix2D())计算得到的,用于描述仿射变换
输出图像的大小,
插值方法(默认为线性),:cv2.INTER_LINEAR(线性插值)、cv2.INTER_NEAREST(最近邻插值)、cv2.INTER_CUBIC(三次样条插值)
边缘填充方法,:cv2.BORDER_CONSTANT(常量填充)、cv2.BORDER_REFLECT(反射)、cv2.BORDER_REFLECT_101(反射101)
边界颜色 :borderMode 为 cv2.BORDER_CONSTANT
)
cv2.getRotationMatrix2D(center:旋转的中心点, angle:旋转角度, scale:缩放因子)
返回值:
输出图像
应用:
import cv2
img = cv2.imread("./women.png")
M = cv2.getRotationMatrix2D((img.shape[1]/2,img.shape[0]/2),45,0.5)
img_warp = cv2.warpAffine(img,
M,
(700,700),
flags=cv2.INTER_LINEAR,
borderMode=cv2.BORDER_WRAP)
cv2.imshow("img",img)
cv2.imshow("img_gary",img_warp)
cv2.waitKey(0)
修改缩放因子
六,透视变换函数
功能:
用于对图像进行透视变换的函数
而透视变换是把一个图像投影到一个新的视平面的过程
参数:
cv2.warpPerspective(src, M, dsize, dst=None, flags=cv2.INTER_LINEAR, borderMode=cv2.BORDER_CONSTANT, borderValue=None)
cv2.warpPerspective(输入图像,
透视变换矩阵,
输出图像的尺寸,
输出图像,这是一个可选参数。
插值方法,:cv2.INTER_LINEAR(线性插值)、cv2.INTER_NEAREST(最近邻插值)、cv2.INTER_CUBIC(三次样条插值)
)
返回值:
图像
应用:
import cv2
import numpy as np
img = cv2.imread("./223.png")
points1 = np.array([[80, 300], [950, 50], [150, 620], [1060,400]],
dtype=np.float32)
points2 = np.array([[0, 0], [img.shape[1], 0], [0, img.shape[0]], [img.shape[1], img.shape[0]]],
dtype=np.float32)
M = cv2.getPerspectiveTransform(points1, points2)
img_warp = cv2.warpPerspective(img, M,(img.shape[1], img.shape[0]))
cv2.imshow("img",img)
cv2.imshow("img1",img_warp)
cv2.waitKey(0)