Corona приятно. Из учебного пособия:
corona::Image* image = corona::OpenImage("img.jpg", corona::PF_R8G8B8A8);
if (!image) {
// error!
}
int width = image->getWidth();
int height = image->getHeight();
void* pixels = image->getPixels();
// we're guaranteed that the first eight bits of every pixel is red,
// the next eight bits is green, and so on...
typedef unsigned char byte;
byte* p = (byte*)pixels;
for (int i = 0; i < width * height; ++i) {
byte red = *p++;
byte green = *p++;
byte blue = *p++;
byte alpha = *p++;
}
пиксели будут одномерным массивом, но вы можете легко преобразовать заданное положение x и y в положение в 1D-массиве. Что-то вроде POS = (Y * ширина) + х
Вы можете написать свой собственный, глядя на формат формата JPEG .
Это сказано, попробуйте ранее существующую библиотеку, как CIMG , или Boost's Gil . Или для строго JPEG, libjpeg . Существует также класс CXIMAGE на CodeProject.
$ sed -e 's/\([a-zA-Z0-9.].*\) [0-9] \(.*\)/\2 \(\1\)/g' file
Doe, John (jdoe)
Doe, Jane (jad)
Smith, Jon (smith)
-121--3049958- Другой подход, который может сработать, это разделение графика на 200 точек и отбрасывание всех, кроме максимальных, минимальных и медианных точек в каждом интервале. Каждая из трех точек в интервале будет выведена на график в исходном местоположении, поэтому расположение экстремальных значений не изменится. Использование медианы вместо среднего, вероятно, будет работать лучше для вашего набора данных, потому что максимумы гораздо более экстремальны, чем минимумы, что приведет к смещению отфильтрованного графика вверх, если вы используете среднее.
-121--2913852-Опробуйте библиотеку CImg . Ознакомление с учебным пособием . Если у вас есть объект CImg, функция data () предоставит вам доступ к массиву буфера пикселей 2D.
Проверьте эту тему: Прочитайте и запишите файл изображения .
Кроме того, взгляните на этот другой вопрос в StackoverFlow .