Opencv图像上的算术运算

图像加法

简单来讲,图像加法就是把图像放在一起变成一张图像。

图像是像素构成的,所以加的是像素,自然要有着相同的位置才可以相加。

举个例子来说明下:(两个像素)

  1. x= np.unit([250])    #x的像素
  2. y = np.unit([10])    #y的像素
  3.  print  cv2.add(x,y)

对头,将两个像素相加的函数就是它!

  • cv2.add()

这时会输出什么结果呢?(ps:不要那上面的代码测试哦,因为这是伪代码~)

250像素+10像素     ???这似乎超过了255这个顶点,所以只输出255

像素值超过255的,直接输出255

以上的这种方法使用opencv的加法函数来运算的,是饱和操作。(255+10>255所以取255,这就是饱和操作)

而接下来要是用

  1. print x+y

会出现什么情况呢?

这种运算是numpy里的,我们叫它模运算

-啪啪啪!

-什么是模运算?怎么算?咋这么麻烦?!

-简单来讲,结果是4

250+10=260%256=4(模运算就是余数加上除数等于除数)

我们很少用它,所以就说这么多啦~

下面开始另一种运算    图像混合

这种类似加法,很简单,就是让图像以不同权重加一块生成一张新图像。

啥?权重是啥?

权重就是重要性,越重要的东西越要保护好不是吗,权重越大的图像自然显示的就多一些啦。记住权重的总和是    1    。

我们写一下代码吧,先写下思路:

调用库,读取图像,混合图像,显示图像,关闭窗口。

就是这么简单,上代码!(我们就混合两幅图像吧,我还没试过三张的~)

 

# -*- coding:utf-8 -*-
"""
Created on Mon Jan 25 22:17:21 2017

@author: Y

"""

import cv2
import numpy as np

img1 = cv2.imread('C:\Users\Administrator\Desktop\opencvimg\Logo.png')
img2 = cv2.imread('C:\Users\Administrator\Desktop\opencvimg\what.png')

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

cv2.imshow('dst',dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

我们来看下不同权重下的结果

大家猜猜这是按什么权重混合的?

我们就叫它图A

这个呢?

我们叫它图B

来张合影,对比一下

 

我把原图给大家

我给他起名what
我给他起名Logo,它和what的像素大小是一模一样的,都是150*150

好啦,图A是what0.3,Logo0.7权重混合的(我用的Logo不是白的吗,啥时候变成黑的了?回头一看上一篇文章中似乎也是,really akward~)

图B是what0.7,Logo0.3~你想对啦吗?

美好时光总要结束的,今天就为大家介绍这两种运算方式吧,新年大家都过得怎么样?有没有吃到爸爸妈妈包的饺子呢,大年将至,提前祝愿大家新年快乐!我是Y,欢迎大家来我的博客做客,另外我要单开一章来说明联系方式,大家有兴趣可以留言评论,我看到了一定很开心的回复你哒~晚安啦

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注