У меня возникли проблемы с выяснением библиотеки улучшенных изображений.
Я не смог найти точную документацию о том, как использовать функцию interleaved_view, включенную в библиотеку boost :: gil. Более конкретно, я не знаю точно, в каком двоичном формате должны храниться необработанные данные.
Единственное упоминание об этом, которое я смог найти, было в уроке gil:
// Calling with 8-bit RGB data into 16-bit BGR
void XGradientRGB8_BGR16(const unsigned char* src_pixels, ptrdiff_t src_row_bytes, int w, int h,
signed short* dst_pixels, ptrdiff_t dst_row_bytes) {
rgb8c_view_t src = interleaved_view(w,h,(const rgb8_pixel_t*)src_pixels,src_row_bytes);
rgb16s_view_t dst = interleaved_view(w,h,( rgb16s_pixel_t*)dst_pixels,dst_row_bytes);
x_gradient(src,dst);
}
Также в прототипе функции написано
template<typename Iterator>
type_from_x_iterator< Iterator>::view_t
boost::gil::interleaved_view (std::size_t width, std::size_t height, Iterator pixels, std::ptrdiff_t rowsize_in_bytes)
//Constructing image views from raw interleaved pixel data.
У меня вопрос: что именно ожидает формат gil в двоичном формате, и каким должен быть rowize_in_bytes?
Единственный раз, когда я видел чередованное изображение раньше, - это работа с OpenGL, которая представляла собой просто информацию RGB для каждого пикселя, хранящегося рядом друг с другом. Я думал, что rowize_in_bytes будет буквально размером строки пикселей в байтах, поэтому я попытался написать PNG с этим:
void makeImage(const string fileName, const unsigned char * src, const int w, const int h) {
rgb8c_view_t outImage = interleaved_view(w,h, (const rgb8_pixel_t*) src, w*3*sizeof(unsigned char));
boost::gil::png_write_view(fileName,outImage);
}
и входной src был плоским массивом размера w * h, формата
(char)R, (char)G, (char)B, (char)R, (char)G, (char)B, (char)R, (char)G, (char)B ...
Изображение было просто белой коробкой на черном фоне. Однако полученные результаты были довольно ... странными
![Results](https://i.stack.imgur.com/cl4E9.png)
Если у кого-нибудь есть идея, почему это произошло, и как на самом деле работает interleaved_view, это было бы здорово. Заранее спасибо!
РЕДАКТИРОВАТЬ: Извините, ребята, я только что понял свою глупую ошибку. Теперь я все заработал ... :( Проблема была не в формате изображения, а в том, что он был основным, а не основным столбцом