opencv for python (6) 改变一幅图的特定区域 (往一幅图片上加标志)

来源:互联网 发布:怎样制作淘宝图片轮播 编辑:程序博客网 时间:2024/04/28 21:08

想把oencv的标志放在另一幅图像上,如果使用加法,亚瑟会改变,如果使用混合,会得到透明效果,但是我不行要透明,这时就可以运用按位运算来实现。

import cv2  import numpy as np img1 = cv2.imread('opencv.jpg') #原始图像img2 = cv2.imread('logo.png')   #logo图像,要往原始图像上添加rows,cols,channels = img2.shape  #得到logo的尺寸roi  = img1[0:rows,0:cols ]   #在原始图像中截取logo图像大小的部分img2gray = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)#将logo图像灰度化ret,mask =cv2.threshold(img2gray,200,255,cv2.THRESH_BINARY)#将logo灰度图二值化,将得到的图像赋值给mask,logo部分的值为255,白色mask_inv = cv2.bitwise_not(mask)  #将mask按位取反,即白变黑,黑变白img1_bg = cv2.bitwise_and(roi,roi,mask = mask)#将原始图像中截取的部分做处理,mask中黑色部分按位与运算,即保留黑色部分,保留除logo位置外的部分img2_fg = cv2.bitwise_and(img2,img2,mask = mask_inv)#将logo图像中,mask_inv部分按位与运算,即保留黑色部分,保留logodst = cv2.add(img1_bg,img2_fg) #图像相加img1[0:rows,0:cols] = dst       #图像替换cv2.imshow('res',img1)cv2.waitKey(0)cv2.destroyAllWindows()
阅读全文
0 0
原创粉丝点击