opencv-python 常用函数介绍

目录

imread:读取图片

imshow: 展示图片

resize:图片等比例缩放

split:获取所有像素的颜色值

merge:根据颜色值合成图片

VideoCapture:读取指定的摄像头或视频

addWeighted:融合两副大小和通道数相等的图像

add:两张图片像素值做加法

subtract:两张图片像素值做减法

mutiply:两张图片像素值做乘法

divide:两张图片像素值做乘法

equalizeHist:直方图均衡器

threashold:图像阈值化处理

cv2.THRESH_BINARY:二值化阈值处理

cv2.THRESH_BINARY_INV:反二值化阈值处理

cv2.THRESH_TRUNC:截断阈值化处理

cv2.THRESH_TOZERO:低阈值零处理

cv2.THRESH_TOZERO_INV:超阈值零处理

其他


imread:读取图片

img = cv2.imread("test.jpg")

imshow: 展示图片

img = cv2.imread("test.jpg")
cv2.imshow("test", img)

resize:图片等比例缩放

# src:原图像
# dsize:指定输出图像所需宽高,跟fx,fy可以二选一,进行比例调整
# fx:沿水平轴的比例因子,0.6:x轴按0.6的比例缩小
# fy:沿垂直轴的比例因子,0.6:y轴按0.6的比例缩小
# interpolation:插值方式

img = cv2.imread("test1.jpg")

# 指定宽高
x = int(img.shape[1] * 0.4)
y = int(img.shape[0] * 0.4)
img1 = cv2.resize(img, (x, y))
cv2.imshow("img1", img1)

# 指定比例
img2 = cv2.resize(img, None, fx=0.4, fy=0.4)
cv2.imshow("img2", img2)

split:获取所有像素的颜色值

b, g, r = cv2.split(img)
print(b)
print(g)
print(r)

merge:根据颜色值合成图片

img = cv2.merge((b, g, r))

VideoCapture:读取指定的摄像头或视频

# VideoCapture入参:
# 0, 1 ,2: 代表多摄像头时,调取的是哪个摄像头。只有一个摄像头时,输入0
# test.mp4: 指定读取 test.mp4 这个视频
vc = cv2.VideoCapture(0)
while True:
    flag, frame = vc.read()
    if flag is True:
        cv2.imshow("frame", frame)
        if ord("q") == cv2.waitKey(0):
            break
    else:
        break
vc.release()

addWeighted:融合两副大小和通道数相等的图像

# src1, src2:需要融合相加的两副大小和通道数相等的图像
# alpha:src1的权重
# beta:src2的权重
# gamma:gamma修正系数,不需要修正设置为0
# dst:可选参数,输出结果保存的变量,默认值为None,如果为非None,输出图像保存到dst对应实参中,其大小和通道数与输入图像相同,图像的深度(即图像像素的位数)由dtype参数或输入图像确认
# dtype:可选参数,输出图像数组的深度,即图像单个像素值的位数(如RGB用三个字节表示,则为24位),选默认值None表示与源图像保持一致。
# 返回值:融合相加的结果图像
img = cv2.imread("test.png")
cv2.imshow("png", img)

background = cv2.imread("background.jpg")
background = cv2.resize(background, (400, 400))
cv2.imshow("background", background)

merge = cv2.addWeighted(background, 0.5, img, 0.5, 0)
cv2.imshow("merge", merge)

add:两张图片像素值做加法

img = cv2.imread("test1.jpg")
img = cv2.resize(img, (0, 0), fx=0.2, fy=0.2)
cv2.imshow("img", img)

layer1 = numpy.zeros_like(img)
layer1[:,:] = (60, 60, 60)
# 增加亮度
img2 = cv2.add(img, layer1)
cv2.imshow("img2", img2)

 b、g、r 都增加了60个像素值,图像亮度变亮。

subtract:两张图片像素值做减法

img = cv2.imread("test1.jpg")
img = cv2.resize(img, (0, 0), fx=0.2, fy=0.2)
cv2.imshow("img", img)

layer1 = numpy.zeros_like(img)
layer1[:,:] = (60, 60, 60)
# 降低亮度
img3 = cv2.subtract(img, layer1)
cv2.imshow("img3", img3)

 b、g、r 都增加了60个像素值,图像亮度变暗

mutiply:两张图片像素值做乘法

img = cv2.imread("test1.jpg")
img = cv2.resize(img, (0, 0), fx=0.2, fy=0.2)
cv2.imshow("img", img)

layer1 = numpy.zeros_like(img)
layer1[:, :] = (2.8, 2.8, 2.8)
img3 = cv2.multiply(img, layer1)
cv2.imshow("img3", img3)

 b、g、r 像素值都乘上2.8,b、g、r之间差值变大,图像对比度提高

divide:两张图片像素值做乘法

img = cv2.imread("test1.jpg")
img = cv2.resize(img, (0, 0), fx=0.2, fy=0.2)
cv2.imshow("img", img)

layer1 = numpy.zeros_like(img)
layer1[:, :] = (2.8, 2.8, 2.8)
img4 = cv2.divide(img, layer1)
cv2.imshow("img4", img4)

 b、g、r 像素值都除以2.8,b、g、r之间差值变小,图像对比度降低

equalizeHist:直方图均衡器

img = cv2.imread("background.jpg")
img = cv2.resize(img, (0, 0), fx=0.4, fy=0.4)
cv2.imshow("img", img)

b, g, r = cv2.split(img)
bH = cv2.equalizeHist(b)
gH = cv2.equalizeHist(g)
rH = cv2.equalizeHist(r)

img1 = cv2.merge((bH, gH, rH))
cv2.imshow("img1", img1)

使得模糊的图片,每个点都能模拟出相同照明条件,使得图片的对比度提升,让模糊的图片内容会变的清晰

threashold:图像阈值化处理

cv2.THRESH_BINARY:二值化阈值处理

img = cv2.imread("test1.jpg")
img = cv2.resize(img, (0, 0), fx=0.2, fy=0.2)
cv2.imshow("img", img)

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow("gray", gray)

# 二值化阈值处理
ret, thresh1 = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
cv2.imshow("THRESH_BINARY", thresh1)
print(gray)
print(thresh1)

上面代码,将灰度图 像素值在 [127, 255] 之间的值转换为 255,不在范围内的转换为 0。

cv2.THRESH_BINARY_INV:反二值化阈值处理

img = cv2.imread("test1.jpg")
img = cv2.resize(img, (0, 0), fx=0.2, fy=0.2)
# cv2.imshow("img", img)

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow("gray", gray)

ret2, thresh2 = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY_INV)
cv2.imshow("THRESH_BINARY_INV", thresh2)
print(gray)
print(thresh2)

上面代码,刚好与 cv2.THRESH_BINARY 相反,将灰度图 像素值在 [127, 255] 之间的值转换为 0,不在范围内的转换为 255。

cv2.THRESH_TRUNC:截断阈值化处理

img = cv2.imread("test1.jpg")
img = cv2.resize(img, (0, 0), fx=0.2, fy=0.2)
# cv2.imshow("img", img)

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow("gray", gray)

ret3, thresh3 = cv2.threshold(gray, 127, 255, cv2.THRESH_TRUNC)
cv2.imshow("THRESH_TRUNC", thresh3)
print(gray)
print(thresh3)

上面代码,将灰度图 像素值大于 127 的值转换为 127,小于 127 的值保持不变。

cv2.THRESH_TOZERO:低阈值零处理

img = cv2.imread("test1.jpg")
img = cv2.resize(img, (0, 0), fx=0.2, fy=0.2)
# cv2.imshow("img", img)

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow("gray", gray)

ret6, thresh6 = cv2.threshold(gray, 127, 255, cv2.THRESH_TOZERO)
cv2.imshow("THRESH_TOZERO", thresh6)
print(gray)
print(thresh6)

上面代码,将灰度图 像素值大于 127 的值保持不变,小于 127 的值转变为0。

cv2.THRESH_TOZERO_INV:超阈值零处理

img = cv2.imread("test1.jpg")
img = cv2.resize(img, (0, 0), fx=0.2, fy=0.2)
# cv2.imshow("img", img)

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow("gray", gray)

ret7, thresh7 = cv2.threshold(gray, 127, 255, cv2.THRESH_TOZERO_INV)
cv2.imshow("THRESH_TOZERO_INV", thresh7)
print(gray)
print(thresh7)

上面代码,将灰度图 像素值大于 127 的值转变为0,小于 127 的值保持不变。

其他

以下俩种算法,将会根据对应的算法自动生成阈值,手动指定的阈值将无效

cv2.THRESH_OTSU:大津阈值法

cv2.THRESH_TRAINGLE:三角阈值法

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
opencv-python常用操作包括图像的读取、显示、保存,以及图像的基本处理操作,如灰度转换、裁剪、缩放、旋转等。 下面是一些常用opencv-python操作: 1. 图像读取:使用cv2.imread()函数读取图像文件,指定文件路径和读取模式。例如:image = cv2.imread('image.jpg')。 2. 图像显示:使用cv2.imshow()函数显示图像,参数为窗口名称和图像数据。例如:cv2.imshow('image', image)。 3. 图像保存:使用cv2.imwrite()函数将图像保存到文件中,参数为保存路径和图像数据。例如:cv2.imwrite('output.jpg', image)。 4. 灰度转换:使用cv2.cvtColor()函数将彩色图像转换为灰度图像,参数为原始图像和转换模式。例如:gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)。 5. 裁剪图像:使用数组切片操作来裁剪图像的特定区域。例如:cropped_image = image[y:y+h, x:x+w]。 6. 缩放图像:使用cv2.resize()函数调整图像大小,参数为原始图像和目标大小。例如:resized_image = cv2.resize(image, (new_width, new_height))。 7. 旋转图像:使用cv2.getRotationMatrix2D()和cv2.warpAffine()函数来旋转图像,分别生成旋转矩阵和应用矩阵。例如:M = cv2.getRotationMatrix2D(center, angle, scale);rotated_image = cv2.warpAffine(image, M, (width, height))。 以上是一些常见的opencv-python操作,可以根据具体需求进行选择和组合使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [如何解决opencv-python,以及opencv-contrib-python包安装运行解决人脸识别问题等问题](https://blog.csdn.net/Go_ahead_forever/article/details/131529050)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [opencv-python常用函数汇总](https://blog.csdn.net/qq_45752541/article/details/125037327)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林墨鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值