前言

opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍图像的算术运算,坚持学习,共同进步。

系列教程参照OpenCV-Python中文教程;

系统环境

系统:win7_x64;

python版本:python3.5.2;

opencv版本:opencv3.3.1;

内容安排

1.知识点介绍;

2.测试代码;

具体内容

1.知识点介绍;

使用cv2/numpy的库函数,涉及函数有cv2.add() 、cv2.addWeighted(),内容有图像加法、图像混合和按位运算;

1.1 图像加法;

使用cv2.add()将两幅图像进行加法运算,也可以直接使用numpy,两幅图像的大小,类型必须一致,或者第二个图像可以是一个简单的标量值。
openCV的加法是一种饱和操作,而numpy的加法是一种模操作。OpenCV的结果会更好,so尽量使用OpenCV中的函数;

x=np.uint8([250])
y=np.uint8([10])
print(cv2.add(x,y))#250+10=260>=255
#结果为[[255]]
print (x+y)#250+10=260%255=4
#结果为[4]

1.2 图像混合

这也是加法,不同的是两幅图像的权重不同,这会给人一种混合或者透明的感觉。图像混合的计算公式如下:
g(x) = (1−α)f0 (x)+αf1 (x),通过修改α的值(0-->1),可以实现很酷的混合。dst = α·img1 + β·img2+γ;

dst = cv2.addWeighted(img1,0.7,img2,0.3,0)

1.3 按位运算,包括按位操作有:AND,OR,NOT,XOR等,当我们提取图像的一部分,选择非矩形ROI时,会很有用;

mask_inv = cv2.bitwise_not(mask)
img1_bg = cv2.bitwise_and(roi,roi,mask=mask)

2.测试代码;

import cv2
import numpy as np
#图像加法
x=np.uint8([250])
y=np.uint8([10])
print(cv2.add(x,y))#250+10=260>=255#.两幅图像的大小,类型必须一致,或者第二个图像可以是一个简单的标量值。
#结果为[[255]]
print (x+y)#250+10=260%255=4
#结果为[4]#图像混合
img1=cv2.imread('test.jpg')
logo = cv2.imread('logo.jpg')
img2=cv2.resize(logo, (50, 50))#dst = cv2.addWeighted(img1,0.7,img2,0.3,0)#.两幅图像的大小,类型必须一致,或者第二个图像可以是一个简单的标量值。#cv2.imshow('dst',dst)
#cv2.waitKey(0)
#cv2.destroyAllWindows()#按位运算
# I want to put logo on top-left corner, So I create a ROI
rows,cols,channels = img2.shape
roi = img1[0:rows,0:cols]# Now create a mask of logo and create its inverse mask also
img2gray = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)#灰度化
ret,mask = cv2.threshold(img2gray,175,255,cv2.THRESH_BINARY)#二值化
mask_inv = cv2.bitwise_not(mask)#取非# Now black-out the area of logo in ROI
#取ROI中与mask中不为零的值对应的像素的值,让其值为0 。
#注意这里必须有mask=mask或者mask=mask_inv,其中mask=不能忽略
img1_bg = cv2.bitwise_and(roi,roi,mask=mask)
#取roi中与mask_inv中不为零的值对应的像素的值,其他值为0
# Take only region of logo from logo image.
img2_fg = cv2.bitwise_and(img2,img2,mask=mask_inv)# Put logo in ROI and modify the main image
dst = cv2.add(img1_bg,img2_fg)
cv2.imshow('dst', dst)
img1[0:rows,0:cols] =dstcv2.imshow('res',img1)
cv2.waitKey(0)
cv2.destroyAllWindows()

测试结果显示

参考

1.opencv图像算术运算;

转载于:https://www.cnblogs.com/happyamyhope/p/8126061.html

opencv-python教程学习系列8-opencv图像算术运算相关推荐

  1. OpenCV Python教程(2、图像元素的访问、通道分离与合并)

    OpenCV Python教程之图像元素的访问.通道分离与合并 转载请详细注明原作者及出处,谢谢! 访问像素 像素的访问和访问numpy中ndarray的方法完全一样,灰度图为: [python] v ...

  2. opencv-python教程学习系列2-读取/显示/保存图像

    前言 opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍图像的读取.显示以及保存,坚持学习,共同进步. 系列教程参照OpenCV-Python中文教程: ...

  3. python 几何教学_opencv-python教程学习系列11-几何变换

    前言 opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍几何变换,坚持学习,共同进步. 系统环境 系统:win7_x64; python版本:python ...

  4. python鼠标点击事件event_opencv-python教程学习系列5-处理鼠标事件

    前言 opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍opencv-python处理鼠标事件,坚持学习,共同进步. 系统环境 系统:win_x64; p ...

  5. 转载:【OpenCV入门教程之四】 ROI区域图像叠加初级图像混合 全剖析

    [OpenCV入门教程之四] ROI区域图像叠加&初级图像混合 全剖析 浅墨_毛星云 2014-03-10 12:48:05 157425 收藏 19 最后发布:2014-03-10 12:4 ...

  6. OpenCV Python教程(3)(4)(5): 直方图的计算与显示 形态学处理 初级滤波内

    OpenCV Python教程(3.直方图的计算与显示) 本篇文章介绍如何用OpenCV Python来计算直方图,并简略介绍用NumPy和Matplotlib计算和绘制直方图 直方图的背景知识.用途 ...

  7. 【OpenCV新手教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放...

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/26157633 作者:毛星云(浅墨) ...

  8. 【OpenCV入门教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/26157633 作者:毛星云(浅墨) ...

  9. Python爬虫学习系列教程

    大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把一些学习的笔记总结下来,还记录了一些自己实际写的一些小爬虫,在这里跟大家一同分享,希望对Python爬虫 ...

最新文章

  1. 懂你的里程银行,大数据为川航提升用户时代的流量变现力
  2. pycharm 快捷键2
  3. java技术栈_七天串起java技术栈-开篇
  4. oracle中对排序的总结(按照拼音、部首、笔画排序功能 )
  5. 在手机里输入八卦及64卦符号(老年教程)
  6. 第十讲 线性反馈移位寄存器
  7. 都是山寨惹的祸 最邪恶安卓恶意程序肆虐网络
  8. FlashFXP使用阿里云ECS私钥登录
  9. 我的世界Minecraft Java开服教程(Windows)开服器开服包下载开服网站服务器开服核心开服端开服软件mac版Java启动器资源包
  10. 一名优秀的测试工程师,应具备那些能力
  11. mysql索引失效的几种情况
  12. 材质允许png格式的图片透明
  13. 标准声纹采集终端,为声纹库建设提供标准支撑,为声纹鉴定和比对提供坚实的基础!
  14. 跌破150美元、市值蒸发3600亿美元,这个圣诞节苹果过得“太冷了”!...
  15. Linux 小程序开发日记(终章)(pyqt+yolov5)
  16. TOEFL战地手记听力FAQ
  17. 清除浏览器js和css缓存
  18. C++用桌面图标系列之三【整理-时钟】
  19. R语言dplyr包使用group_by函数和summarise函数构建频率表实战
  20. C:\Windows\system32\config\systemprofile\Desktop不可用,win10

热门文章

  1. 15、Ordering(排序)
  2. 实验室摇动培养箱的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  3. 一种Python全局配置规范以及其魔改
  4. 扎克伯格的政治野心:2017年他想走遍美国52个州
  5. Yunxion智能定位胸牌为一线记者提供安全保障
  6. 史上最详细的23中设计模式解析,一个不落,理论搭配简单案例,更好理解哦
  7. 业余学python大家都是如何赚钱的?
  8. springboot教室图书馆座位预约小程序毕业设计毕设作品开题报告开题答辩PPT
  9. 嵌入式项目烂尾的真实原因
  10. 计算机公式YEAR的含义是,Excel 中函数YEAR是什么意思,year是什么意思怎么读通俗点...