从文件夹中读取图像(OpenCV)

Posted

技术标签:

【中文标题】从文件夹中读取图像(OpenCV)【英文标题】:Read images from folder (OpenCV) 【发布时间】:2011-08-01 10:26:32 【问题描述】:

下面是读取名为 Example1.jpg 的图像的 r、g、b 值并在新的文本文件 out.txt 中显示所有值的代码。

但是如何读取文件夹内所有图片的 r,g,b 值呢?

int main(int argc, char** argv)
   

//while there are still images inside the folder,
//how to loop al images in a folder and read their r,g,b values//

//load the image in color
IplImage *img = cvLoadImage("Example.jpg",CV_LOAD_IMAGE_COLOR);

//set up pointer to access image data
uchar * data = (uchar*) img->imageData;

//get nchannels and step;
int nchannels = img->nChannels;
int step      = img->widthStep;

//calculate r,g,b value 
int b,g,r;

//display all pixel of the picture
int width = img->width;
int height= img->height;
int row,col;

//declare and open a output text file
ofstream outData;
outData.open("out.txt");

for (row=0; row<height; row++)

    for(col=0; col<width; col++)
    b = data[col*step + row*nchannels + 0];
    g = data[col*step + row*nchannels + 1];
    r = data[col*step + row*nchannels + 2];

    outData<<r<<" "<<g<<" "<<b<<endl;
    


//wait user press key to exit
cvWaitKey(0);

//free memory
cvDestroyWindow("Skin");
cvReleaseImage(&img);

//press any key to continue
system("PAUSE");

【问题讨论】:

【参考方案1】:

您可以使用以下代码遍历指定文件夹中的每个项目:

string filePath = @"C:\Files\";
string[] filePaths = Directory.GetFiles(filePath);

完成此操作后,循环遍历数组中的每个条目并检查它是否包含 .jpg 或任何其他图像类型:

foreach(string s in filePaths)

if (s.Contains(".jpg"))

    CallYourFunction(System.IO.Path.GetFileName(s));


【讨论】:

以上是关于从文件夹中读取图像(OpenCV)的主要内容,如果未能解决你的问题,请参考以下文章

C 编程和 OpenCV(如何从文件中读取图像并将其加载以在 openCv 中进行进一步处理)

在opencv中读取视频文件的连续图像

opencv如何批量读取文件夹中图片

opencv 怎样从MP4格式视频中读取一帧

使用 OpenCV(C++)读取文件夹中的任何 .jpg 图像 [关闭]

OpenCV 函数学习01-图像的读取(cv2.imread)