本文以常见的二维BMP图像为例,对比OpenCV, QT, ITK库对图像像素级的操作。
(1)OpenCV由IplImage对图像像素级的操作, 要考虑RGB分量;
IplImage* img = cvLoadImage("D:/openCV/Project/readImage/data/binary.bmp");
uchar temp = image->imageData[y * image->widthStep + x];//widthStep = width * 3, 对应RGB3个分量
(2)QT由QImage对图像像素级的操作,要考虑ARGB分量;
QImage* img = new QImage();
img->load("D:/openCV/Project/readImage/data/binary.bmp");
unsigned char* data = img->bits();//获取图像像素字节数据的首地址
(3)ITK由reader指针对图像像素级的操作,不要考虑RGB分量;
typedef itk::ImageFileReader< InputImageType > ReaderType;
ReaderType::Pointer reader = ReaderType::New();
具体代码实现:
(1)OpenCV由IplImage对BMP图像灰度值反转
IplImage* invertIntensity(IplImage* image)
{
for(int