Чета поредица от jpg файлове и след това използвам функцията convertTo(Mat, CV_32FC3) на OpenCV, за да ги конвертирам:
Mat outImg = Mat.zeros(tmp.size(), CV_32FC3);
Mat curImg = new Mat();
for (int i = 0; i < imgCount; i++) {
fname = fp + String.format("%02d", i) + ".jpg";
curImg = imread(fname);
curImg.convertTo(curImg, CV_32FC3);
Imgproc.accumulateWeighted(curImg, outImg, 0.01);
}
outImg.convertTo(outImg, CV_8UC3, ?????);
imwrite(fp + "output" + "-" + curTime + ".jpg", outImg);
Предполагам, че трябва да го конвертирам обратно в CV_8UC3, преди да мога да го запиша в jpg, но не съм сигурен как да направя това. Намерих друг SO отговор, който казваше, че трябва да го мащабирам, като го умножа по 255 (третият параметър в convertTo()), но това прави изхода напълно бял. 100 е по-добро число, но все още има значително количество изрязване (да не говорим, че 255 е най-логичното число за 8-битова картина). Това ли е правилният начин да направите това? Ако не, как мога да запазя изображението правилно?
outImg
преди преобразуване? - person beaker   schedule 26.05.2015