openCV图像的运算

'''
#图像的加法运算
import cv2
import numpy as np
x = np.uint8([250])
y = np.uint8([10])
print(cv2.add(x, y))#openCV中的加法,250+10=260=》255,是一种饱和操作
print(x+y)#Numpy中的加法:250+10=260%256=4,是一种模操作
'''


'''
#图像的混合运算
import cv2
import numpy as np
img1 = cv2.imread('test1.png')
img2 = cv2.imread('test2.png')
tsd = cv2.addWeighted(img1, 0.7, img2, 0.3, 0)
#注意这容易出错,可以使用print(img1.shape)查看两幅图像形状是否一致
cv2.imshow('img', tsd)
cv2.waitKey(0)
cv2.destroyAllWindows()
'''

#按位运算
#基本操作:AND OR NOT XOR
#目的:改变一幅图的特定区域

import cv2
import numpy as np

img1 = cv2.imread('test1.png')
img2 = cv2.imread('test2.png')

rows, cols,channels = img2.shape
roi = img1[0:rows, 0:cols]
#拷贝:从img2里头拷贝

img2gray = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)#扣成灰度图
ret, mask = cv2.threshold(img2gray, 175, 255,cv2.THRESH_BINARY)
#设置阈值
#形成新的灰度图mask
#在OpenCV中,我们使用threshold(src,thresh,maxval,type,dst=None)函数来实现图像的固定阈值二值化,即将图像中阈值内的图形抠出
#参数1 必选参数。表示输入图像,注意只能是灰度图
#参数2 必选参数。表示要设置的阈值,也是整个函数最关键的参数。VC
#参数3 必选参数。当像素值超过阈值或小于阈值(具体根据type来决定)时所赋予的值。
#参数4 必选参数。二值化操作的类型:
#        THRESH_BINARY(超过阈值时的像素值为maxval(参数3),否则为0)
#        THRESH_BINARY_INV(小于阈值的像素值为maxval(参数3),否则为0)
#函数有两个返回值,其中ret就是我们设置的阈值,mask为经过阈值二值化处理后的图像

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('res', img1)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

https://www.cnblogs.com/liming19680104/p/12235430.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值