2012-05-20 63 views
5

我已經跟隨兩個圖像背景可能是完全不同的圖像,例如,不只是簡單的顏色。石英:獲取兩個圖像的差異圖像

Image number oneenter image description here

所以基本上我想這兩個圖像的差異圖像,即

enter image description here

兩個圖像的差異圖像是具有相同大小,但圖像 像素被設置爲透明,但尚未更改。所不同的圖像從DIFF像素構造與第二圖像

我在尋找基於核芯顯卡技術解決方案的顏色,請不建議各地在循環中的像素運行。我真的關心表現。

因爲我是新來的石英,我想知道是否有可能實現這與面具? 或者請提出另一種方法!

使用的區別,如果我使用的不同混合模式它並沒有解決我的問題,因爲它不保留像素的正確的顏色混合模式 實際更新。如果我申請的差異混合模式爲上述2個圖像我會得到以下

enter image description here

這似乎已經倒顏色的像素,然後,如果我顛倒他們我獲得以下

enter image description here

這其實不是我想要的,因爲像素顏色完全不同

+0

接受的答案解決方案在http ://stackoverflow.com/questions/3901404/create-a-mask-from-difference-between-two-images-iphone看起來像它可以幫助。 –

+0

@rokjarc感謝您的鏈接,但差異混合模式並不是我的情況的解決方案,只是更新示例圖像來演示它。 – deimus

+0

如果您在設置'CGContextSetBlendMode(kCGBlendModeDifference)後只是將一個圖像繪製到另一個圖像上,會發生什麼情況?'這不會給您以後的樣子嗎? –

回答

6

您可以使用

CGContextSetBlendMode(kCGBlendModeDifference); 

通過繪製第一幅圖像,然後將混合模式設置爲差值並繪製第二幅圖像,您將獲得差異(正如我在我的評論中所建議的那樣)。這給你一個倒像(如你的更新問題所示)。要反轉圖像,可以使用白色填充相同的矩形(因爲混合模式仍設置爲「差異」)。

CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 1.0); 
CGContextFillRect(context, frame); 

示例代碼做這一切(內部的drawRect :)下邊可見。

CGContextRef context = UIGraphicsGetCurrentContext(); 

// Your two images 
CGImageRef img1 = [[UIImage imageNamed:@"Ygsvt.png"] CGImage]; 
CGImageRef img2 = [[UIImage imageNamed:@"ay5DB.png"] CGImage]; 

// Some arbitrary frame 
CGRect frame = CGRectMake(30, 30, 100, 100); 

// Invert the coordinates to not draw upside down 
CGContextTranslateCTM(context, 0, frame.size.height); 
CGContextScaleCTM(context, 1.0, -1.0); 

// Draw original image 
CGContextDrawImage(context, frame, img1); 

// Draw the second image using difference blend more over the first 
CGContextSetBlendMode(context, kCGBlendModeDifference); 
CGContextDrawImage(context, frame, img2); 

// Fill the same rect with white color to invert 
// (still difference blend mode) 
CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 1.0); 
CGContextFillRect(context, frame); 
+0

感謝代碼大衛,但正如我已經提到的差異混合不是我的解決方案,我更新了差異圖像更好的定義問題。實際上,兩幅圖像的差異圖像是相同大小的圖像,但像素被設置爲透明且未改變。差異圖像是由差異像素與第二個圖像的顏色構成 – deimus

+1

因此,基本上你想要使用第二個圖像掩碼的區別? –

+0

是的!任何想法如何構建面具? – deimus