2017-07-11 167 views
4

我想获得平均合并图像来显示使用下面的代码:OpenCV的蟒蛇像冲洗

import numpy as np 
import cv2 
import matplotlib.pyplot as plt 

dolphin=cv2.imread('dolphin.png',0) #Also tried without the 0 
bicycle=cv2.imread('bicycle.png',0) 

Bycycle - original Dolphin - original

下面的代码将两个图像和结果是一样什么在课程中显示。但一个简单的加法avg = img1 + img2不起作用。

Simple addition - washout areas

sumimg=cv2.add(dolphin,bicycle) 
cv2.imshow('Sum image', sumimg) 

两个图像加在一起而不进行任何修改 - 冲洗区域是由于添加被过255该元素因此该值被设置为255

cv2.waitKey(0) 
cv2.destroyAllWindows() 

以下代码只是给我是一个白色的形象。当我尝试除了少数黑点

Adding images with division by 2

avgimg=cv2.add(dolphin/2,bicycle/2) 

相同的结果通过avgimg = IMG1/2 + IMG2/2

获得海豚或循环显示半强度...相同的结果
cv2.imshow('Avg image', avgimg) 
cv2.waitKey(0) 
cv2.destroyAllWindows() 

的Udacity过程表明,如果你通过2通过分割图像添加你应该得到这样的: From Udacity course - two images added after dividing by 2

所以问题是:当我将图像除以2时,矩阵包含255以下的值,并且添加的两个矩阵也包含255以下的值,那么为什么产生的图像完全消失?

+0

我无法上传我需要的图像,因为我没有10点声望。无论什么...当我通过首先将矩阵除以2来添加两个图像时,我所得到的只是白色的图像。 – Omi

+0

那么你的实际问题是什么?你没有得到冲刷效果?或者它不显示? – DarkCygnus

+1

@Omi:你现在有10个声望。如果你愿意,你可以编辑问题并添加图像。 –

回答

3

如果你希望两个图像添加到一个(所以他们都出现在产生的图像上),与输入平均每一个,你应该使用addWeighted()方法,像这样(从docs拍摄):

import numpy as np 
import cv2 

#load your images 
dolphin = cv2.imread('dolphin.png') #use 0 for grayscale 
bicycle = cv2.imread('bicycle.png') 
#add them with a weight, respectively, last parameter is a scalar added 
dst = cv2.addWeighted(dolphin,0.7,bicycle,0.3,0) 

#show 
cv2.imshow('Blended Image',dst) 
cv2.waitKey(0) 
cv2.destroyAllWindows() 

:由于在以前的链接也提到,重要的是注意到,numpyOpenCV另外不同是重要的,因为numpy具有取模运算(%),而OpenCV具有饱和运算(在帽最大),澄清我们有这个提取的例子乐从该链接:

>>> x = np.uint8([250]) 
>>> y = np.uint8([10]) 

>>> print(cv2.add(x,y)) # 250+10 = 260 => 255 , saturated 
[[255]] 
>>> print(x+y)   # 250+10 = 260 % 256 = 4 , modulo 
[4] 

这可能就是为什么你使用add()方法,而不是得到一个白色图像(所有像素帽255和显示白色)的原因。

+1

谢谢@GrayCygnus。现在很清楚为什么简单的添加不起作用。我尝试了加权法。它和Udacity课程中的预期一致。 – Omi

+0

很高兴听到这个,祝你的编码顺利。如果这个答案解决了你的问题,记得[接受](https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)它,所以其他用户可以从中受益。如果您觉得它有用,请记住注意观看。 – DarkCygnus