Я обрабатываю видеокадры в режиме реального времени. Я перебираю каждый пиксель по одному, делаю математику, а затем устанавливаю для пикселя определенный цвет (при необходимости).
В двух словах, мой алгоритм выглядит так:
//videoFrame is IplImage, 8 bit, 4 channel
for(int i=0;i<videoFrame.width;i++){
for(int j=0;j<videoFrame.height;j++){
CvScalar pixel = cvGet2D(&videoFrame, i, j);
double red = pixel.val[0];
double green = pixel.val[1];
double blue = pixel.val[2];
//do some math
if (someCondition) {
cvSet2D(&videoFrame, i, j, white);
}
}
}
но я считаю, что звонки cvGet2D(&videoFrame, i, j);
и cvSet2D(&videoFrame, i, j, white);
действительно дорогие (медленные). Есть ли альтернативный способ быстрее получить доступ к значению красного / зеленого / синего каждого пикселя?
Спасибо!