首页 > 编程 > Python > 正文

OpenCV python 学习笔记(三)

2019-11-08 02:54:01
字体:
来源:转载
供稿:网友

不多说,直接上代码:

# -*- coding:utf-8 -*-# 图像上的算数运算#   目标:#       学习图像上的算术运算,加法、减法、位运算#       主要函数:cv2.add()、cv2.addWeighted()等import cv2import numpy as np# 图像上的加法# 大致有两种:#       cv2.add():这是一个饱和操作#       +:这是Numpy中的运算,之一种模操作,res = img1 + img2# 注意两幅图片的大小类型必须一致,或者第二个图象是一个标量# 由于两者的差别,我们一般多用cv2.add(src1, src2)## x = np.uint8([250])# y = np.uint8([10])## PRint x+y# print cv2.add(x,y)# # [4]           解释:(250+10)%255                     这是模运算# # [[255]]       解释:(250+10)>255?255:(250+10)        这是饱和运算# 图像的混合# 原理:也是加法,只是权重不同,给人一种混合的或者透明的感觉# 公式:g(x) = (1-a)*f0(x) + a*f1(x)       a→(0,1)不同的a值可以实现不同的效果# dist = a*img1+(1-a)*img2+y              cv2.addWeighted(img1, a, img2, (1-a), y)# img1 = cv2.imread("01.jpg")# img2 = cv2.imread("02.jpg")## if img1.size == img2.size and img1.dtype == img2.dtype:#     res = cv2.addWeighted(img1, 0.5, img2, 0.5, 5)#     cv2.namedWindow("show", cv2.WINDOW_NORMAL)#     cv2.imshow("show", res)#     if cv2.waitKey(0) == 27:#         cv2.destroyAllWindows()# # 效果很赞# 按位运算# 问题:如何将一个图放到另一个图上去,加法会改变颜色,混加会透明# 解决:按位运算# img = cv2.imread("TestOpencv.jpg", cv2.IMREAD_COLOR)# img1 = cv2.imread("01.jpg")# img2 = img[120:320, 300:450]## rows, cols, channels = img2.shape# roi = img1[0:rows, 0:cols]## gray_img2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)                      # 将图片灰度化# ret, mask = cv2.threshold(gray_img2, 175, 255, cv2.THRESH_BINARY)       # 不了解# mask_inv = cv2.bitwise_not(mask)                                        # 按位运算# img1_bg = cv2.bitwise_and(roi, roi, mask = mask)                        # 同上# img2_fg = cv2.bitwise_and(img2,img2,mask = mask_inv)                    # 同上## dst = cv2.add(img1_bg,img2_fg)# img1[0:rows, 0:cols] = dst## cv2.imshow("show", img2_fg)# cv2.waitKey(0)# cv2.destroyAllWindows()# 练习:创建一个幻灯片,来演示如何将一幅图平滑转换到另一幅图,使用函数cv2.addWeighted()import timestep_list = [0.02 * x for x in range(0, 51)]img1 = cv2.imread("01.jpg")img2 = cv2.imread("02.jpg")cv2.imshow("show", img1)for i in step_list:    res = cv2.addWeighted(img1, i, img2, (1-i), 0)    cv2.imshow("show", res)    cv2.waitKey(60)if cv2.waitKey(0) ==27:    # 按'Esc'退出    cv2.destroyAllWindows()
# ret, mask = cv2.threshold(gray_img2, 175, 255, cv2.THRESH_BINARY)       # 不了解

我不是很了解,望解答(自勉)这次把两张图片也上传


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表