opencv1.0,IplImage类型存储图像数据,3通道
void print_img(IplImage* img)
{
int x,y;
FILE *file;
file = fopen("1.txt", "w");
uchar* data = (uchar *)img->imageData;
int step = img->widthStep / sizeof(uchar);
int channels = img->nChannels;
for (int i = 0; i<img->height; i++)
for (int j = 0; j<img->width; j++)
{
fprintf(file, "%d %d %d ", data[i*step + j*channels + 0], data[i*step + j*channels + 1], data[i*step + j*channels + 2]);
}
fclose(file);
}
opencv2.4.9,Mat类型存储图像数据,3通道
void print_img(Mat img)
{
int x,y;
FILE *file;
file = fopen("1.txt", "w");
for (int x = 0; x<img.rows; x++)
{
for (int y = 0; y<img.cols; y++)
{
fprintf(file, "%d %d %d ", img.at<Vec3b>(x, y)[0], img.at<Vec3b>(x, y)[1], img.at<Vec3b>(x, y)[2]);
}
}
}

本文介绍了如何使用OpenCV的不同版本来读取和打印图像数据。对于OpenCV 1.0,通过IplImage结构体及其成员变量进行操作;而对于OpenCV 2.4.9,则采用Mat类并利用at()函数获取像素值。两种方法均实现了将图像的RGB通道值写入到文本文件中。

被折叠的 条评论
为什么被折叠?



