OpenCV入门函数

张开发
2026/4/16 16:02:15 15 分钟阅读

分享文章

OpenCV入门函数
matplotlibimport matplotlib.pyplot as pltplt.axis()控制图表的轴范围、缩放和外观# 设置坐标轴的范围 plt.axis([0, 10, 0, 20]) # 创建一个正方形的图形x和y轴范围相同 plt.axis(square) # 设置x和y轴刻度等长 plt.axis(equal) # 关闭坐标轴 plt.axis(off) # 显示坐标轴 plt.axis(on) # 自动缩放坐标轴以显示所有数据 plt.axis(auto) # 设置坐标轴以适应图像模式 plt.axis(image) # 设置坐标轴以适应紧凑模式 plt.axis(tight) # 设置坐标轴以适应缩放模式 plt.axis(scaled)plt.subplot()用于创建子图的函数。它允许你在一个图形窗口中创建多个子图从而方便地进行多图绘制。plt.subplot(2, 1, 1) nrows: 子图的行数。2 ncols: 子图的列数。1 index: 子图的位置索引从1开始。第一个 plt.tight_layout()plt.tight_layout()用于自动调整子图参数避免标题、标签或刻度文字与相邻子图或图形边缘重叠plt.show()则用于显示绘制好的图形通常在绘制完成并调整布局后调用。plt.tight_layout(pad0.5) # pad 控制边距 plt.show()plt.hist()直方图plt.hist(equ.ravel(),256,[0,256]) plt.hist(img.ravel(),256,[0,256],facecolor black) 一 img.ravel()–把多维数组转化成一维数组 因为hist函数只支持一维的数组数组下标为横坐标值为纵坐标 二256 表示横坐标的最大值为256有256条柱 三[0,256]表示数据显示范围 PS横坐标超过256的数据也归到256处 四facecolor 表示柱状图的颜色 cv2cv2.resize()cv2.resize(src, dsize)img1 cv2.resize(img1, (img2.shape[1], img2.shape[0])) image2.shape()会输出3个值 (高度, 宽度, 通道数) img2.shape[0] img2 的高度 img2.shape[1] img2 的宽度 (img2.shape[1], img2.shape[0])把目标大小设定成 img2 的宽和高 整句话合起来就是 把 img1 缩放到和 img2 一样大 cv2.cvtcolor()用于将图像从一种颜色空间转换为另一种颜色空间的函数# 将 BGR 图像转换为灰度图像 img_GRAY cv2.cvtColor(img_BGR, cv2.COLOR_BGR2GRAY)OpenCV vs matplotlib 通道顺序OpenCV默认读取为 BGR 顺序matplotlib默认显示为 RGB 顺序正确流程BGR → RGB用于显示RGB → BGR用于保存#BGR转换为RGB,命名rgb小写 img1_rgb cv2.cvtColor(img1, cv2.COLOR_BGR2RGB) #BGR转灰度opencv中通道默认为为BGR gray1 cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY) #灰度转二值图像 _, binary1 cv2.threshold(gray1, 127, 255, cv2.THRESH_BINARY)cv2.warpAffine用于执行仿射变换的函数。它通过一个 2x3 的变换矩阵对图像进行平移、旋转、缩放等操作。# 向右平移100向下平移50 M1 np.float32([[1, 0, 100], [0, 1, 50]]) img1 cv2.warpAffine(image, M1, (image.shape[1], image.shape[0])) #warpAffine中dsize: 输出图像的尺寸格式为 (宽度, 高度)列行 #shape(高度宽度通道数)行列通道 rowscolsimg.shape[:2]#取高度宽度 #img.shape[:3] 则取彩色图片的长、宽、通道注意F:\SZTXCL\../代表向上跳一级目录# 如果 dataself 文件夹在 F盘根目录 image_path../dataself/library.png # 如果 dataself 文件夹在 SZTXCL 同级 image_path./dataself/library.png ./ 当前目录代码所在文件夹 ../ 向上 1 级目录 ../../ 向上 2 级目录 F:/SZTXCL/ktcvdataself/ 绝对路径 cv2.threshold()_, binary1 cv2.threshold(gray1, 127, 255, cv2.THRESH_BINARY)阈值函数作用把一张灰度图强行变成只有 黑 (0) 和 白 (255) 的图阈值分界线像素亮度 127→ 变成白色像素亮度 127→ 变成黑色大于阈值的像素要变成的值白色cv2.threshold会返回两个东西返回值 1最终用的阈值我们一般不用返回值 2二值化后的图像我们必须要cv2.imread()# 读取图像0 表示以灰度模式读取 img cv2.imread(../data/fruits.png, 0)#零cv2.medianBlur()中值滤波对除去斑点噪声和椒盐噪声很有用缺点是中值滤波花费的时间在均值滤波的 5 倍以上。result cv2.medianBlur(source,3) #对图片进行了孔径为 3 的中值滤波。 #这个孔径选取必须为大于1的奇数cv2.equalizeHist()用于对灰度图像进行直方图均衡化。# 对图像进行直方图均衡化 equalized_img cv2.equalizeHist(img)cv2.Laplacian()dst cv2.Laplacian(img,cv2.CV_16S,ksize3) # 16 位有符号整数范围-32768 到 32767 Laplacian cv2.convertScaleAbs(dst) #CV_16S 能完整保留正负梯度值后续再通过 cv2.convertScaleAbs() 转换为可显示的无符号图像。 CV_16s,16 位有符号整数范围-32768 到 32767 dstcv2.Laplaciansrc,ddepth[,ksize[,scale[,delta[,borderType]]]] 式中 ● dst代表目标图像。 ● src代表原始图像。 ● ddepth代表目标图像的深度。 ● ksize代表用于计算二阶导数的核尺寸大小。该值必须是正的奇数。当ksize的值为1时Laplacian算子计算时采用的 3×3的核如上所示。 ● scale代表计算Laplacian值的缩放比例因子该参数是可选的。默认情况下该值为 1表示不进行缩放。 ● delta代表加到目标图像上的可选值默认为0。 ● borderType代表边界样式。 numpyimport numpy as npnp.float32np.float32可以将输入数据转换为32位浮点数格式。如果输入数据已经是32位浮点数或更高精度的浮点数np.float32函数将不会进行转换而是直接返回原始数据。# 将整数5转换为32位浮点数 x np.float32(5) print(x) # 输出5.0NumPy还提供了np.int8、np.int16、np.int32、np.int64等整数类型以及np.float64、np.complex64等其他浮点数和复数类型。每种数据类型都有其特定的内存大小和表示范围。np.hstack()水平按列合并多个数组返回一个新的数组import numpy as np # 创建三个数组 arr1 np.array([1, 2, 3]) arr2 np.array([4, 5, 6]) arr3 np.array([7, 8, 9]) # 水平合并三个数组 result np.hstack((arr1, arr2, arr3)) print(result) #运行结果为[1 2 3 4 5 6 7 8 9]np.copy()进行图像的复制arr numpy.copy(img) # 返回一个复制的图像np.random.randint()用于生成随机整数numpy.random.randint(low, highNone, sizeNone, dtypel) low 生成的整数最低值包含即所有生成的整数都会大于等于这个值。 high 生成的整数最高值不包含即所有生成的整数都会小于这个值。 size 元素的数量输出的形状可以为整数生成元素的数量或者元组各维度的大小。如果不提供则返回一个单一随机整数。 dtype 数据类型可选参数默认为’l’表示生成的数据类型为整数。

更多文章