Как выборочно читать данные из буфера

0

У меня есть изображение размером 720x576, сохраненное по строке в unsigned char luma[414720] и мне нужно отображать центрированное изображение размером 640x480.

Мой вопрос: каков наиболее эффективный способ выборочного доступа к данным, сохраненным в одном буфере, используя только один цикл?

Спасибо за ваши ответы.

Петр Дуга

  • 2
    Что ты имеешь в виду под "просто один за цикл"?
  • 0
    Может быть, он имеет в виду «сингл for цикла».
Показать ещё 1 комментарий
Теги:

1 ответ

2

Попробуй это:

newLuma - это новый рисунок, который будет отображаться.

int i= 0;
char newLuma[640*480];
int rowStart = (576 - 480)/2 -1 ;
int colStart = (720 - 640)/2 -1 ;


for ( i = 0; i < 480; i++)
{
    memcpy(newLuma[i*640], luma[720*(rowStart + i) + colStart], 640);
}
  • 0
    Спасибо Jerry_Y, это именно то, что мне было нужно. Петр Дуга
  • 0
    memcpy(newLuma[i*480], luma[576*(R+i)+C], 480) это не должно быть memcpy(newLuma[i*480], luma[576*(R+i)+C], 480) где R = (720-640)/2 - 1, C = (576-480)/2 -1 ? Чего мне не хватает?
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню