Hai bisogno di un ciclo su ogni immagine, e si accumulano i risultati. Poiché è probabile che ciò causi un overflow, è possibile convertire ciascuna immagine in un'immagine CV_64FC3
e accumularsi su un'immagine CV_64FC3
. È possibile utilizzare anche CV_32FC3
o CV_32SC3
per questo, vale a dire utilizzando float
o integer
anziché double
.
volta accumulati tutti i valori, è possibile utilizzare sia convertTo
:
- rendere l'immagine un divario
CV_8UC3
- ogni valore per il numero di immagini, per ottenere la media effettiva.
Questo è un esempio di codice che crea 100 immagini casuali, e calcola e mostra l' medio:
#include <opencv2\opencv.hpp>
using namespace cv;
Mat3b getMean(const vector<Mat3b>& images)
{
if (images.empty()) return Mat3b();
// Create a 0 initialized image to use as accumulator
Mat m(images[0].rows, images[0].cols, CV_64FC3);
m.setTo(Scalar(0,0,0,0));
// Use a temp image to hold the conversion of each input image to CV_64FC3
// This will be allocated just the first time, since all your images have
// the same size.
Mat temp;
for (int i = 0; i < images.size(); ++i)
{
// Convert the input images to CV_64FC3 ...
images[i].convertTo(temp, CV_64FC3);
// ... so you can accumulate
m += temp;
}
// Convert back to CV_8UC3 type, applying the division to get the actual mean
m.convertTo(m, CV_8U, 1./images.size());
return m;
}
int main()
{
// Create a vector of 100 random images
vector<Mat3b> images;
for (int i = 0; i < 100; ++i)
{
Mat3b img(598, 598);
randu(img, Scalar(0), Scalar(256));
images.push_back(img);
}
// Compute the mean
Mat3b meanImage = getMean(images);
// Show result
imshow("Mean image", meanImage);
waitKey();
return 0;
}
http://answers.opencv.org/question/7385/how-to-calculate -il-valore-medio-di-immagini multiple/ –
Non sono sicuro di aver capito correttamente la tua domanda nella mia risposta, potresti per favore commentare se ho capito bene? – kebs
voglio prendere la media di 100 immagine, il mio problema: se prendo la media aggiungendo ogni pixel, il mio ciclo farà 598 * 598 * 100 = 25000000 ripetizione –