目录
一、负片效果的原理
将像素的三色值设为(255-原值。设图像矩阵为img,代码如下:
# 生成负片
b, g, r = cv2.split(img)
b = 255-b
g = 255-g
r = 255-r
二、水印的效果原理
调用putText函数,以图像矩阵为第1个参数,输出内容为第2个参数,在图像上直接输出水印文字。代码如下:
加上水印
cv2.putText(img,'HELLO WORLD', (20,20), cv2.FONT_HERSHEY_PLAIN, 2.0, (0, 0, 0), thickness = 2)
# 文本的位置在坐标(20,20),使用字体cv2.FONT_HERSHEY_PLAIN,字体大小为2.0,颜色为黑色(0,0,0),线条粗细为2。
cv2.putText(img,'HELLO MACHINE LEARNING', (20,100), cv2.FONT_HERSHEY_PLAIN, 1.0, (0, 0, 0), thickness = 2)
三、示例图片
四、负片与水印效果的完整代码
import cv2
import numpy as np
fn = r"C:\Users\LIHAO\Pictures\Saved Pictures\wallhaven-1pdk1v.jpg"
if __name__ == '__main__':
img = cv2.imread(fn)
w=img.shape[1]
h=img.shape[0]
# 生成负片
b, g, r = cv2.split(img)
b = 255-b
g = 255-g
r = 255-r
# 直接通过索引改变色彩分量
img[:,:,0]=b
img[:,:,1]=g
img[:,:,2]=r
# 加上水印
cv2.putText(img,'HELLO WORLD', (100,1000), cv2.FONT_HERSHEY_PLAIN, 2.0, (0, 0, 0), thickness = 2)
# 文本的位置在坐标(100,1000),使用字体cv2.FONT_HERSHEY_PLAIN,字体大小为2.0,颜色为黑色(0,0,0),线条粗细为2。
cv2.putText(img,'HELLO MACHINE LEARNING', (600,100), cv2.FONT_HERSHEY_PLAIN, 1.0, (0, 0, 0), thickness = 2)
cv2.namedWindow('img')
cv2.imshow('img', img)
cv2.waitKey()
cv2.destroyAllWindows()