Я пытаюсь вычислить среднее (элемент за элементом) списка матриц. Во-первых, я делаю элемент суммы по элементу а вот код, я используюСумма мата в openCV
Mat imageResult = videoData[round(timestampInstImages[indexImg] * 100)];
for (double frame = (timestampInstImages[indexImg] + timeBetweenFields); frame < (timestampInstImages[indexImg] + 1); frame += timeBetweenFields)
{
double roundedTimestamp = round(frame * 100);
if (!videoData[roundedTimestamp].empty())
{
cout << "imageResult " << imageResult.at<int>(10,10) << endl;
cout << "videoData[roundedTimestamp] " << videoData[roundedTimestamp].at<int>(10,10) <<endl;
imageResult += videoData[roundedTimestamp];
cout << "Result : " << imageResult.at<int>(10,10) << endl;
}
}
Вот первые строки вывода я получил:
imageResult 912924469
videoData[roundedTimestamp] 929701431
Result : 1842625900 //(912924469 + 929701431) It looks good
imageResult 1842625900
videoData[roundedTimestamp] 963386421
Result : -1493214815 // Not sure how the sum of 963386421 and 1842625900 returns this value???
imageResult -1493214815
videoData[roundedTimestamp] 963518006
Result : -536905769
imageResult -536905769
Как вы можете видеть выше , в сумме что-то не так. Не уверен, что это. Любая идея, что происходит?
вы ** должны ** получить доступ к cv :: Mat с правильным типом. предполагая, что ваши видеоданные содержат рамки bgr, это должно быть сделано следующим образом: 'imageResult.at (10,10)'. int определенно не так. –
berak