前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >图像处理笔记(3)----OpenCV图像算术运算

图像处理笔记(3)----OpenCV图像算术运算

作者头像
小火柴棒
发布2020-09-07 15:12:59
4010
发布2020-09-07 15:12:59
举报
文章被收录于专栏:石开之旅石开之旅石开之旅

我想把OpenCV的标志放到另一幅图像上,如果使用相加add函数,颜色会改变,使用addWeighted函数会得到透明效果,怎么做呢?

import cv2 as cv
# import numpy as np

img1 = cv.imread('C:\\Users\\dragon\\Pictures\\Camera Roll\\ali.jpg')
img2 = cv.imread('C:\\Users\\dragon\\Pictures\\Camera Roll\\OpenCV_logo.png')

rows,cols,channels = img2.shape#获取img2图像的长、宽和RGB通道数
roi = img1[0:rows, 0:cols]#在img1中截取和img2同样像素大小的图像

cv.imshow('roi',roi)

img2gray = cv.cvtColor(img2, cv.COLOR_BGR2GRAY)#获取img2的灰度图
ret, mask = cv.threshold(img2gray, 175, 255, cv.THRESH_BINARY)
# 图像二值化
# 第一个原图像,第二个进行分类的阈值,第三个是高于(低于)阈值时赋予的新值,第四个是一个方法选择参数,常用的有:
# • cv2.THRESH_BINARY(黑白二值)
# • cv2.THRESH_BINARY_INV(黑白二值反转)
# • cv2.THRESH_TRUNC (得到的图像为多像素值)
# • cv2.THRESH_TOZERO
# • cv2.THRESH_TOZERO_INV

mask_inv = cv.bitwise_not(mask)#将黑白颜色反转
cv.imshow('mask', mask)
cv.imshow('mask_inv', mask_inv)

img1_bg = cv.bitwise_and(roi, roi, mask = mask_inv)
#图像按位与操作,只有mask_inv[i]不等于0时,才会进行"and"运算
cv.imshow('img1_bg', img1_bg)

img2_fg = cv.bitwise_and(img2, img2, mask = mask)
cv.imshow('img2_fg', img2_fg)

dst = cv.add(img1_bg, img2_fg)
img1[0:rows, 0:cols] = dst


cv.imshow('res', img1)
cv.waitKey(0)
cv.destroyAllWindows()

代码如上,我把过程中的图像截图出来,这样会更好理解 ali.jpg原图:

aili.jpg原图
aili.jpg原图

OpenCV_logo.png原图:

OpenCV_logo.png
OpenCV_logo.png

运算后的图:

结合图
结合图

运算中间的图,图片框的标题对应程序中的图:

中间过程图
中间过程图
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档