(进阶向)Python第十三期,opencv的图像预处理方法[1]

发布于:2025-07-24 ⋅ 阅读:(23) ⋅ 点赞:(0)

目录

1、图像的叠层:

 2、图像颜色的转换

3、图像的二值化处理

3.1 cv.COLOR_BRG2GRAY与cv.THRESH_BINARY对比图(阈值法)

3.2 cv.COLOR_BRG2GRAY与cv.THRESH_BINARY_INV对比图(反阈值法)

3.3 cv.COLOR_BRG2GRAY与cv.THRESH_TRUNC对比图(截断阈值法)

3.4 cv.COLOR_BRG2GRAY与cv.THRESH_TOZERO对比图(低阈值零处理)

3.5 cv.COLOR_BRG2GRAY与cv.THRESH_TOZERO_INV对比图(高阈值零处理)

3.6cv.COLOR_BRG2GRAY&cv.THRESH_BINARY+cv.THRESH_OTSU对比图(OTSU阈值法)

3.7cv.COLOR_BRG2GRAY&cv.ADAPTIVE_THRESH_MEAN_C,cv.THRESH_BINARY对比图(自适应均值阈值法)

3.8cv.COLOR_BRG2GRAY&cv.ADAPTIVE_THRESH_GAUSSIAN_C,cv.THRESH_BINARY对比图(高斯阈值法)


引言:这期继续讲一下OpenCV软件库中所应用的API方法的实现;这期重点会提到几个比较重要图像处理方法,包括缩放,以及饱和度设置的方法;

1、图像的叠层:

————cv.add(jpg1,jpg2)将两张图片叠加显示,注:尺寸必须相同否则会报错;

实例操作:输出效果如下,类似于将某个物品P在上面一样

import cv2 as cv
import numpy as np

cao = cv.imread("../images/cao.png")#查阅第一张图片
pig = cv.imread("../images/pig.png")#查阅第二张图片
#饱和操作cv.add(img1,img2) np.uint8 0~255 250+10=255
#进行相加操作
dst1 = cv.add(cao, pig)
cv.imshow("dst1", dst1)#输出图片

————在叠层图像时,我们也可以设置一些参数使我们的图像以不同的饱和度或者透明度显示。

 实例操作:

dst2 =cao + pig
cv.imshow("dst2", dst2)

x =np.uint8([[250]]
y =np.uint8([[10]])
xy1 =cv.add(x,y)
xy2 =x+y
print(xy1,xy2)
#颜色加权加法 cv.addWeighted(img1,alpha,img2,beta,gamma)
dst3 = cv.addWeighted(cao,0.4,pig,0.6,50)
cv.imshow("dst3", dst3)
cv.waitKey(0)
cv.destroyAllWindows()

————从图中可以明显看出来猪的图片会浅一点,草的图片更深了;

 2、图像颜色的转换

————将图像以多种不同的颜色表示出来,利用的API方法有,cv.COLOR_BGR2HSV/

GRAY/RGB/YUV/YCrCb,分别是以HSV色度,灰度图,RGB色度,YUV色度,YCrCb色度转换图像;

实例操作: 方法都很简单,输出的效果就不展示了

import cv2 as cv
import numpy as np

#读取图像
image = cv.imread("../images/pig.png")
#颜色转换
dst = cv.cvtColor(image, cv.COLOR_BGR2HSV)#HSV色度
dst1 = cv.cvtColor(image, cv.COLOR_BGR2GRAY)#灰度图
dst2 = cv.cvtColor(image, cv.COLOR_BGR2RGB)#RGB色度
dst3 = cv.cvtColor(image, cv.COLOR_BGR2YUV)#YUV色度
dst4 = cv.cvtColor(image, cv.COLOR_BGR2YCrCb)#YCrCb色度
cv.imshow("image3", dst3)
cv.imshow("image4", dst4)
cv.imshow("image2", dst2)
cv.imshow("image", dst)
cv.imshow("image1", dst1)
cv.waitKey(0)
cv.destroyAllWindows()

3、图像的二值化处理

————一幅二值图像的二维矩阵仅由0、1两个值构成,“0”代表黑色,“1”代白色。由于每一像素(矩阵中每一元素)取值仅有0、1两种可能,所以计算机中二值图像的数据类型通常为1个二进制位。二值图像通常用于文字、线条图的扫描识别(OCR)和掩膜图像的存储。

 实例操作:

import cv2 as cv
import numpy as np
#读取图片
flower = cv.imread("../images/flower.png")
#灰度化处理
gray = cv.cvtColor(flower, cv.COLOR_BGR2GRAY)
gray = cv.resize(gray, (360, 360))
cv.imshow("gray", gray)
#阈值法
thresh, binary = cv.threshold(gray, 127,255, cv.THRESH_BINARY)
#显示图片
cv.imshow("binary", binary)
#反阈值法
_,binary_inv = cv.threshold(gray, 127,255, cv.THRESH_BINARY_INV)
cv.imshow("binary_inv", binary_inv)
#截断阈值法
_,binary_trunc = cv.threshold(gray, 127,255, cv.THRESH_TRUNC)
cv.imshow("binary_trunc", binary_trunc)
#低阈值零处理
_,zero = cv.threshold(gray, 127,255, cv.THRESH_TOZERO)
cv.imshow("zero", zero)
#高阈值零处理
_,zero_inv = cv.threshold(gray, 127,255, cv.THRESH_TOZERO_INV)
cv.imshow("zero_inv", zero_inv)
#OTSU阈值法
_,binary_otsu = cv.threshold(gray, 0,255, cv.THRESH_BINARY+cv.THRESH_OTSU)
cv.imshow("binary_otsu", binary_otsu)
#自适应阈值法
# 均值
binary_mean = cv.adaptiveThreshold(gray, 255, cv.ADAPTIVE_THRESH_MEAN_C, cv.THRESH_BINARY, 11, 2)
cv.imshow("binary_mean", binary_mean)
#  Gaussian
binary_gaussian = cv.adaptiveThreshold(gray, 255, cv.ADAPTIVE_THRESH_GAUSSIAN_C, cv.THRESH_BINARY, 11, 2)
cv.imshow("binary_gaussian", binary_gaussian)
cv.waitKey(0)
cv.destroyAllWindows()

3.1 cv.COLOR_BRG2GRAY与cv.THRESH_BINARY对比图(阈值法)

3.2 cv.COLOR_BRG2GRAY与cv.THRESH_BINARY_INV对比图(反阈值法)

3.3 cv.COLOR_BRG2GRAY与cv.THRESH_TRUNC对比图(截断阈值法)

3.4 cv.COLOR_BRG2GRAY与cv.THRESH_TOZERO对比图(低阈值零处理)

3.5 cv.COLOR_BRG2GRAY与cv.THRESH_TOZERO_INV对比图(高阈值零处理)

3.6cv.COLOR_BRG2GRAY&cv.THRESH_BINARY+cv.THRESH_OTSU对比图(OTSU阈值法)

3.7cv.COLOR_BRG2GRAY&cv.ADAPTIVE_THRESH_MEAN_C,cv.THRESH_BINARY对比图(自适应均值阈值法)

3.8cv.COLOR_BRG2GRAY&cv.ADAPTIVE_THRESH_GAUSSIAN_C,cv.THRESH_BINARY对比图(高斯阈值法)

 总结:这是图像预处理的第一期,主要讲解的还是API操作,操作方法挺难记忆,不过记不住的时候也可以咨询AI,以及官方文档。慢慢巩固学习,听说主攻图像处理方面的薪资也是比较理想的,继续努力加油。


网站公告

今日签到

点亮在社区的每一天
去签到