前言
项目需要将opencv格式的图像转化为boost::gil库的图像格式,特将转化方法记录。
实现
下面代码演示如何用opencv读取.jpg格式图片,并将其转化为boost::gil::rgb8_image_t格式图像。
#include <opencv2/opencv.hpp>
#include <boost/gil/image.hpp>
#include <boost/gil/image_view.hpp>
void Ipl2Gil(boost::gil::rgb8_image_t &image)
{
IplImage *src = cvLoadImage("lena.jpg",1);
image.recreate(src->width,src->height);
boost::gil::rgb8_view_t imgV = boost::gil::view(image);
boost::gil::rgb8_view_t::iterator it = imgV.begin();
uchar *ptr = NULL;
for(int i = 0; i < src->height; i++)
{
for(int j = 0; j < src->width; j++)
{
ptr = (uchar*)(src->imageData + i*src->widthStep +j*3);
//opencv 中图像排列格式是B-G-R格式,不是R-G-B格式
boost::gil::rgb8_pixel_t pix(*(ptr +2),*(ptr + 1),*(ptr));
*it++ = pix;
}
}
//返回
return boost::gil::view(image);
}
参考资料:
1. 使用Boost.Gil将BMP图片保存为JPG:http://www.cnblogs.com/LinuxHunter/archive/2010/12/19/1910346.html
2. boost GIL图形图象库学习资料汇总:http://www.docin.com/p-102194666.html
转载请注明作者和出处:http://blog.csdn.net/holamirai,未经允许请勿用于商业用途。