0
Ich versuche, den Durchschnitt einer Reihe von Bildern in Android mit OpenCV zu finden.Android OpenCV Averaging Bilder
Das Ergebnis ist jedoch ein vollständig weißes Bild. Diese
public static Mat averageAll(Mat[] matList){
int type = matList[0].type();
Mat avg = Mat.zeros(matList[0].height(),matList[0].width(),CV_32FC4);
Log.i("avg",""+avg.height()+" "+avg.width()+" "+avg.depth()+" "+avg.type());
for(int i=0;i<matList.length;i++){
Log.i(""+i,""+matList[i].height()+" "+matList[i].width()+" "+matList[i].depth()+" "+matList[i].type());
matList[i].convertTo(matList[i],CV_32FC4);
Core.add(matList[i],avg,avg);
}
Core.divide(avg,new Scalar(matList.length),avg);
avg.convertTo(avg,type);
return avg;
}
ist, wie ich die Matten aus Bitmaps erstellen
//imagesList is an arrayList of bitmaps
Mat[] matList = new Mat[imagesList.size()]
for(int k = 0; k<imagesList.size();k++){
Mat m = new Mat();
Utils.bitmapToMat(imagesList.get(k),m);
matList[k]=m;
}
Mat alignedM = ImageProcessor.averageAll(matList);
Ohne den Typ Ihrer _Mat_ in _matList_ kann ich nicht viel sagen. Was erwarten Sie von dem Ergebnis? Bitte geben Sie weitere Informationen an. –
Der Typ der Mat-Liste wäre der gleiche wie das Ergebnis von 'Utils.bitmapToMap()', was ich für einen CV_8U halte. Bevor ich rechne, konvertiere ich sie zu einem CV_32FC4. Die Bilder sind RGB-JPGs. Das erwartete Ergebnis ist ein Bild, dessen Pixelwerte der Durchschnitt der entsprechenden Pixel jedes Bildes in der MatList sind. – xSooDx
Wenn sie RGB sind, sollten sie nicht ** CV_8UC3 ** anstelle von ** CV_32FC4 ** sein? –