大佬教程收集整理的这篇文章主要介绍了c – boost :: gil Interleaved_view,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我找不到关于如何使用boost :: gil库中包含的interleaved_view函数的任何确切文档.更具体地说,我不确切知道原始数据应该存储在哪种二进制格式中.
我能找到的唯一提到的是在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,( 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在二进制格式中期望的格式是什么,以及rowsize_in_bytes应该是什么?
我之前看过交错图像的唯一一次是使用OpenGL时,这只是每个像素彼此相邻存储的RGB信息.我认为rowsize_in_bytes只是字面上一行像素的大小,所以我尝试用这样写一个PNG:
void makeImage(const String filename,const unsigned char * src,const int w,const int h) { rgb8c_view_t outIR_942_11845@age = interleaved_view(w,(const rgb8_pixel_t*) src,w*3*sizeof(unsigned char)); boost::gil::png_write_view(filename,outIR_942_11845@agE); }
输入src是一个大小为w * h的格式的平面数组
(char)R,(char)G,(char)B,(char)R,(char)B ...
图像只是黑色背景上的白色框.但是,我得到的结果相当……奇怪
如果有人知道为什么会这样,以及interleaved_view实际上是如何工作的,那就太好了.提前致谢!
编辑:对不起伙计们,我刚刚意识到我的愚蠢错误.我现在正在工作…… :(问题不在于图像的格式,而在于它是行主要,而不是列专业
以上是大佬教程为你收集整理的c – boost :: gil Interleaved_view全部内容,希望文章能够帮你解决c – boost :: gil Interleaved_view所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。