2010-03-23 22 views
7

का उपयोग कर किसी अन्य छवि से एक छवि घटाएं ओपनसीवी का उपयोग करके मैं एक छवि को दूसरे से कैसे घटा सकता हूं?ओपनसीवी

पी.एस. .: मैं अजगर कार्यान्वयन का उपयोग क्योंकि मैं सी में यह करने के लिए ++ उपयोग LoadImage स्मृति में अपनी छवियों को लोड करने के लिए है, तो Sub विधि का उपयोग होगा

उत्तर

5

coudn't। कि अगर मदद मिलेगी

यह लिंक, कुछ उदाहरण कोड शामिल हैं: http://permalink.gmane.org/gmane.comp.lib.opencv/36167

+0

मैं कोशिश करूंगा, मेरे दोस्त। धन्यवाद – marionmaiden

+0

यह उत्तर पुराना पैदा हुआ था :) [डेटाुहू उत्तर] (http://stackoverflow.com/a/2549246/2436175) आजकल एकमात्र मान्य है। – Antonio

+1

पहला लिंक समय, दूसरा लिंक मर चुका है। – Twonky

13
#include <cv.h> 
#include <highgui.h> 

using namespace cv; 

Mat im = imread("cameraman.tif"); 
Mat im2 = imread("lena.tif"); 

Mat diff_im = im - im2; 

बदलें छवि नाम। यह भी सुनिश्चित करें कि उनके पास एक ही आकार है।

3

सीवी :: subtract() विधि का उपयोग करें।

Mat img1=some_img; 
Mat img2=some_img; 

Mat dest; 

cv::subtract(img1,img2,dest); 

यह (ig1-img2) के तत्वानुसार घटता है। आप इसके बजाय diff या बस सामान्य घटाव का उपयोग कर के बारे में यह http://docs.opencv.org/modules/core/doc/operations_on_arrays.html

0

अधिक जानकारी प्राप्त कर सकते im1-im2 मैं नहीं बल्कि OpenCV विधि cv::absdiff

using namespace cv; 
Mat im1 = imread("image1.jpg"); 
Mat im2 = imread("image2.jpg"); 
Mat diff; 
absdiff(im1, im2, diff); 

, सुझाव है कि चित्रों के आम तौर पर अहस्ताक्षरित स्वरूपों का उपयोग करने जमा हो जाती है होगा की घटाव तरीकों @Dat और @ ssh99 सभी नकारात्मक मतभेदों को मार देगा। उदाहरण के लिए, अगर एक बीएमपी छवि के कुछ पिक्सेल im1 और [70, 80, 90]im2 के लिए के लिए मूल्य [20, 50, 30] है, दोनों im1 - im2 और diff(im1, im2, diff) का उपयोग कर, मूल्य [0,0,0] का उत्पादन करेगा के बाद से 20-70 = -50, 50-80 = -30, 30-90 = -60 और सभी नकारात्मक परिणाम 0 की अहस्ताक्षरित मूल्य, में परिवर्तित हो जाएगा जो , ज्यादातर मामलों में, आप जो चाहते हैं वह नहीं है। विधि absdiff इसके बजाय सभी घटावों के पूर्ण मूल्यों की गणना करेगा, इस प्रकार अधिक उचित [50,30,60] का उत्पादन करेगा।