opencv掩膜和水印提取

文章目录

  • 一、掩码和提取
  • 二、水印提取

一、掩码和提取

1、导入图片flower.jpeg
2、使用两种方法将图中的玫瑰花提取出来,具体要求如下:
(1)使用split + 设置单通道掩码 + merge 方法提取
(2)将掩模设置为BGR模式进行直接提取

备注:玫瑰花所在区域在图中ROI为【150:1790, 1290:3200】

import cv2
import os           
import numpy as np

dir_path = os.path.dirname(__file__)
flower_path = os.path.join(dir_path, "pic", "flower.jpeg")

flower = cv2.imread(flower_path, 1)

# method one
b, g, r = cv2.split(flower)

# 设置单通道掩码
mask = np.zeros(flower[:,:,0].shape, dtype=np.uint8)
mask[150:1790, 1290:3200] = 255

# 与白色进行按位与运算得到本身
b_and_mask = cv2.bitwise_and(b, mask)
g_and_mask = cv2.bitwise_and(g, mask)
r_and_mask = cv2.bitwise_and(r, mask)

# 进行合并通道
result_merged = cv2.merge([b_and_mask, g_and_mask, r_and_mask])
# cv2.namedWindow("result_merged", cv2.WINDOW_FREERATIO)
# cv2.imshow("result_merged", result_merged)
# cv2.waitKey()
# cv2.destroyAllWindows()

# method two
# 将掩膜设置为BGR模式
mask = np.zeros_like(flower)
mask[150:1790, 1290:3200, :] = 255

flower_and_mask = cv2.bitwise_and(flower, mask)
# cv2.namedWindow("flower_and_mask", cv2.WINDOW_FREERATIO)
# cv2.imshow("flower_and_mask", flower_and_mask)
# cv2.waitKey()
# cv2.destroyAllWindows()

save_path = os.path.join(dir_path, "result", "result1.jpg")

cv2.imwrite(save_path, flower_and_mask)

二、水印提取

1、导入图片test.png
2、提取该图片中的水印信息

import cv2
import os
import numpy as np

dir_path = os.path.dirname(__file__)
test_path = os.path.join(dir_path, "pic", "test.png")

test = cv2.imread(test_path, -1)

# 生成全1矩阵
t1 = np.ones_like(test)

#
water_mark = cv2.bitwise_and(test, t1)

mask = water_mark[:, :] > 0
water_mark[mask] = 255
# cv2.imshow("water_mark", water_mark)
# cv2.waitKey()
# cv2.destroyAllWindows()

save_path = os.path.join(dir_path, "result", "result2.jpg")

cv2.imwrite(save_path, water_mark)

你可能感兴趣的:(openCV,opencv,人工智能,计算机视觉)