2017-07-11 345 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