От новичка до гуру: Курсы программирования на CyberDuff

получить значения пикселей RGB из uint8 С++

Я создаю функцию С#, которая перемещает изображение BitmapFrame в байт [] (используя копипиксели). Затем я вставляю этот буфер в dll С++, где он uint8*. В cpp есть структура

typedef struct  
{
    float r;
    float g;
    float b;
} pixel;

Можно ли организовать цикл для этого буфера uint8* для получения попиксельно (например по x y - высоте и ширине изображения(эти данные у меня тоже есть))? что-то типа

for(i=0; i< height;i++)
{
for(j=0; j <width;j++)
{
   SomeWorkWithPixelsfromUint8(i,j) //???
}
}

Где SomeWorkWithPixelsfromUint8(i,j) может работать со структурой RGB

Так просто uint8 -> getPixel(x,y) ????

28.11.2011

  • с какой библиотекой вы работаете? 28.11.2011
  • Нет библиотеки. Я пытаюсь написать свой собственный =) Если вы спросите о dll c++ - это тоже мой код. Я пытаюсь соединить эти три объекта - RGB + пиксель (с RGB) + буфер пикселей 28.11.2011
  • Представляет ли один uint8 весь пиксель, или красный, зеленый и синий компоненты представляют собой uint8? 28.11.2011
  • хорошо, как вы упаковываете значение rgb? 28.11.2011
  • Благовест Буюклиев - нет, это для ВСЕХ пикселей и шага изображения Дэниел А. Уайт - операции с пикселями (int x, int y, uint8 inputBuffer) { uint8 buffer = inputBuffer; точка р; п.х = х; р.у = у; Прямая запись; rec.xBottomLeft = 0.f; rec.yBottomLeft = 0.f; rec.width = ширина буфера; rec.height = буфер-›высота; } 28.11.2011
  • Ты шутник, который убил моего кота? 28.11.2011
  • ) Обожаю кошек) У меня жил БОЛЬШОЙ сибирский кот - Дымчатый. к сожалению он умер много лет назад 28.11.2011

Ответы:


1

Предполагая, что ваши данные изображения имеют такой макет

  • Пиксели — это строки развертки на строку развертки, слева направо.
  • Один пиксель упакован как RGB или, в конечном счете, как RGBA.
  • Вы используете pixelSize байт на пиксель (может быть 3, может быть 4, если вы используете альфа-канал).

uint8_t* picData = ...;

uint8_t* pixel = picData;
for(int i = 0; i < height; ++i) {
  for(int j = 0; j < width; ++j, pixel += pixelSize) {
       float r = pixel[0];
       float g = pixel[1];
       float b = pixel[2];
       // Do something with r, g, b
  }
}

28.11.2011
Новые материалы

Отслеживание состояния с течением времени с дифференцированием снимков
Время от времени что-то происходит и революционизирует часть моего рабочего процесса разработки. Что-то более забавное вместо типичного утомительного и утомительного процесса разработки. В..

Я предполагаю, что вы имеете в виду методы обработки категориальных данных.
Я предполагаю, что вы имеете в виду методы обработки категориальных данных. Пожалуйста, проверьте мой пост Инструментарий специалиста по данным для кодирования категориальных переменных в..

Игра в прятки с данными
Игра в прятки с данными Я хотел бы, чтобы вы сделали мне одолжение и ответили на следующие вопросы. Гуглить можно в любое время, здесь никто не забивается. Сколько регионов в Гане? А как..

«Раскрытие математических рассуждений с помощью Microsoft MathPrompter и моделей больших языков»
TL;DR: MathPrompter от Microsoft показывает, как использовать математические рассуждения с большими языковыми моделями; 4-этапный процесс для улучшения доверия и рассуждений в математических..

Раскройте свой потенциал в области разработки мобильных приложений: Абсолютная бесплатная серия
Глава 6: Работа в сети и выборка данных Глава 1: Введение в React Native Глава 2: Основы React Native Глава 3: Создание пользовательского интерфейса с помощью React Native Глава 4:..

Все о кейсах: Camel, Snake, Kebab & Pascal
В программировании вы сталкивались с ними при именовании переменной, класса или функции. Поддержание согласованности типов и стилей случаев делает ваш код более читабельным и облегчает совместную..

Как работает дистанционное парное программирование и почему оно может изменить вашу жизнь
Серебряная пуля от одиночества и отвлекающих факторов во время обучения программированию Независимо от того, работаете ли вы или учитесь удаленно, велика вероятность, что одиночество и..