OpenCV位运算实现图像融合
2018-01-31 22:51
1136 查看
OpenCV在计算机视觉处理方面提供了很多强大的工具,使用OpenCV可以很容易的对图像进行各种算数运算,本文主要介绍通过位运算把两张图片融合成一张图片,可用于添加水印等。
在网上随意找了两张图,一张是google logo,一张是deep learning图片:
使用OpenCV把google logo作为水印添加到deep learning图上,最终效果如下:
构建mask和mask_inv图像
对图像应用mask
图像相加融合,得到最终结果
在网上随意找了两张图,一张是google logo,一张是deep learning图片:
使用OpenCV把google logo作为水印添加到deep learning图上,最终效果如下:
实现思路
把google logo 图片除了google这几个字以外的像素都变为0;把deep learning图片需要嵌入google logo图片的位置上的像素都变为0;那么最后把两张图片像素相加的时候,除了google这几个字,其他的像素值都是deep learning的像素。实现步骤
1.加载图片,图片相加需要有相同的宽和高,所以先构建一个新的图片google_resize,大小和dl_img相同
google_logo = cv2.imread('google.jpg') # google logo 图片 dl_img = cv2.imread('dl.jpg') # deep learning 图片 google_resize = np.ones(dl_img.shape, np.uint8) google_resize = google_resize * 255 # 白色背景 google_resize[0:google_logo.shape[0], 0:google_logo.shape[1]] = google_logo
构建mask和mask_inv图像
google_logo_gray = cv2.cvtColor(google_resize, cv2.COLOR_BGR2GRAY) # 阈值操作,灰度值大于200的像素点位置赋值255,其他像素点位置赋值0 ret, mask = cv2.threshold(google_logo_gray, 200, 255, cv2.THRESH_BINARY) # 取反操作,mask中255的像素点值变为0, 值为0的像素点新值为255 mask_inv = cv2.bitwise_not(mask)
对图像应用mask
google_logo_fg = cv2.bitwise_and(google_resize, google_resize, mask = mask_inv) dl_bg = cv2.bitwise_and(dl_img, dl_img, mask = mask)
图像相加融合,得到最终结果
added_img = cv2.add(google_logo_fg, dl_bg)
相关文章推荐
- python opencv实现图像融合
- Opencv实现两幅图像融合
- opencv-输入两幅图像实现线性融合
- OpenCV学习--实现两幅图像的融合
- Opencv实现两幅图像融合
- 图像融合实现CT与PET图像的融合 OpenCV实现(附实验结果)
- opencv 实现图像的旋转
- 图像检索(5):基于OpenCV实现小型的图像数据库检索
- 【Ubuntu+OpenCV】ubuntu/linux环境下,运用opencv实现图像的读入、显示--学习笔记【1】
- opencv 实现图像的旋转
- opencv实现摄像头的实时图像采集与显示
- 利用opencv2和c++实现视频与图像的互相转换
- OpenCV利用矩阵实现图像旋转
- VS2010实现opencv基于DCT的图像压缩
- 利用OpenCV的inpaint函数实现图像的污点修复
- 利用OpenCV实现图像的叠加
- Ribbon+Opencv 2.4--实现一个简单的Opencv图像处理小工具
- Opencv实现图像的灰度处理,二值化,阀值选择
- OpenCV实现图像颜色特征提取
- 图像相似度计算之哈希值方法OpenCV实现