import cv2 as cv
def add_logo_to_img():
# 水印logo图片
logo = cv.imread('./images/opencv-logo-white.png')
# 需要添加水印的图片
img = cv.imread('./images/messi5.jpg')
# 获取水印的宽高,注意此处水印使用的三通道读取,因此获取水印属性时需要加通道值
h,w,c = logo.shape
# 利用图像像素读取设值原理,直接修改对应像素为水印像素
img[:h,:w] = logo
# 显示添加水印后的图像
cv.imshow('add_logo', img)
cv.waitKey(0)
cv.destroyAllWindows()
if __name__ == "__main__":
add_logo_to_img()
import cv2 as cv
def add_logo_to_img():
# 水印logo图片
logo = cv.imread('./images/butterfly-mall.jpg')
# 需要添加水印的图片
img = cv.imread('./images/messi5.jpg')
# 获取水印的宽高,注意此处水印使用的三通道读取,因此获取水印属性时需要加通道值
h,w,c = logo.shape
# 利用图像像素读取设值原理,直接修改对应像素为水印像素
img[:h,:w] = logo
# 显示添加水印后的图像
cv.imshow('add_logo', img)
cv.waitKey(0)
cv.destroyAllWindows()
if __name__ == "__main__":
add_logo_to_img()
def add_logo_to_img():
# 水印logo图片
logo = cv.imread('./images/opencv-logo-white.png')
# 需要添加水印的图片
img = cv.imread('./images/messi5.jpg')
# 获取水印的宽高,注意此处水印使用的三通道读取,因此获取水印属性时需要加通道值
h,w,c = logo.shape
# 利用图像像素读取设值原理,直接修改对应像素为水印像素
# 遍历 logo 的像素,发现像素值是黑色(0,0,0)就替换为对应的原图像素【反之就是logo像素不是黑色的位置直接赋值给原图】
for row in range(h):
for col in range(w):
b,g,r = logo[row][col]
if b != 0 or g != 0 or r != 0:
img[row][col] = (b,g,r)
# 显示添加水印后的图像
cv.imshow('add_logo', img)
cv.waitKey(0)
cv.destroyAllWindows()
if __name__ == "__main__":
add_logo_to_img()
import cv2 as cv
def add_logo_to_img():
# 水印logo图片
logo = cv.imread('./images/opencv-logo-white.png')
# 需要添加水印的图片
img = cv.imread('./images/messi5.jpg')
# 获取水印的宽高,注意此处水印使用的三通道读取,因此获取水印属性时需要加通道值
h,w,c = logo.shape
# 获取原图的宽高属性
mh,mw,mc = img.shape
# 计算水印居中时的其实坐标
y = int((mh - h) / 2)
x = int((mw - w) / 2)
# 利用图像像素读取设值原理,直接修改对应像素为水印像素
# 遍历 logo 的像素,发现像素值是黑色(0,0,0)就替换为对应的原图像素【反之就是logo像素不是黑色的位置直接赋值给原图】
for row in range(h):
for col in range(w):
b,g,r = logo[row][col]
if b != 0 or g != 0 or r != 0:
img[row + y][col + x] = (b,g,r)
# 显示添加水印后的图像
cv.imshow('add_logo', img)
cv.waitKey(0)
cv.destroyAllWindows()
if __name__ == "__main__":
add_logo_to_img()
import cv2 as cv
def add_logo_to_img():
# 水印logo图片
logo = cv.imread('./images/opencv-logo-white.png')
# 需要添加水印的图片
img = cv.imread('./images/messi5.jpg')
# 获取水印的宽高,注意此处水印使用的三通道读取,因此获取水印属性时需要加通道值
h,w,c = logo.shape
# 获取原图的宽高属性
mh,mw,mc = img.shape
# 计算水印居中时的其实坐标
y = int((mh - h) / 2)
x = int((mw - w) / 2)
# 截取和水印大小等同的原图需要改变位置的图像
change_img = img[y:y+h,x:x+w]
# 显示添加水印位置的截取图像
cv.imshow('change_img', change_img)
# 修改截取图片
# 利用图像像素读取设值原理,直接修改对应像素为水印像素
# 遍历 logo 的像素,发现像素值是黑色(0,0,0)就替换为对应的原图像素【反之就是logo像素不是黑色的位置直接赋值给原图】
for row in range(h):
for col in range(w):
b,g,r = logo[row][col]
if b != 0 or g != 0 or r != 0:
change_img[row][col] = (b,g,r)
# 显示截取图像添加水印后的效果
cv.imshow('change_img_add_logo', change_img)
# 将截取的图片还原到截取位置
img[y:y+h,x:x+w] = change_img
# 显示添加水印后的图像
cv.imshow('add_logo', img)
cv.waitKey(0)
cv.destroyAllWindows()
if __name__ == "__main__":
add_logo_to_img()