Чтение файла изображения в [закрытом] C/C++

21
задан A-Sharabiani 5 October 2018 в 18:07
поделиться

6 ответов

Проверьте Intel Открыть CV Библиотеку ...

3
ответ дан 29 November 2019 в 20:59
поделиться

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 * ширина) + х

2
ответ дан 29 November 2019 в 20:59
поделиться

Проверьте MAGICK ++ API в ImageMagick .

1
ответ дан 29 November 2019 в 20:59
поделиться

Вы можете написать свой собственный, глядя на формат формата JPEG .

Это сказано, попробуйте ранее существующую библиотеку, как CIMG , или Boost's Gil . Или для строго JPEG, libjpeg . Существует также класс CXIMAGE на CodeProject.

Вот большой список .

14
ответ дан 29 November 2019 в 20:59
поделиться
$ 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.

1
ответ дан 29 November 2019 в 20:59
поделиться
3
ответ дан 29 November 2019 в 20:59
поделиться