opencv对图片进行批处理

Posted liutangzhu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv对图片进行批处理相关的知识,希望对你有一定的参考价值。

//先用_findfirst查找第一个文件,若成功则用返回的句柄调用_findnext函数查找其他的文件,当查找完毕后用,用_findclose函数结束查找。

#include<opencv2/opencv.hpp>

#include <stdio.h>

#include <io.h>

#include<iostream>

#include<time.h>

#include<fstream>

using namespace std;

using namespace cv;

 

const char *to_search = "F: \RIDH2\*.png";    //欲查找的文件,支持通配符

char *nameList_txt = "F: \RIDH2\train_list.txt";

FILE *fp;

int main()

{

         //1、生成所有png文件名称的txt文本

         errno_t err;

         intptr_t handle;            //用于查找的句柄;x64环境下,句柄也在变化,要用_int64 定义句柄,而不是long。  intptr_t是为了跨平台,其长度总是所在平台的位数,所以用来存放地址。       

         struct _finddata_t fileinfo;                                     //文件信息的结构体       

 

                                                                                                                                                                //fp= fopen("F:\LiuHuan_File\RIDH2\train_list2.txt", "w+");此程序会报错

 

         if ((err = fopen_s(&fp, nameList_txt, "w+")) != 0)    //对于fopen_s来说,打开文件成功返回0,失败返回非0。

         {

                   printf("can‘t open file ");

                   return 0;

         }

         handle = _findfirst(to_search, &fileinfo);                          //第一次查找             如果查找成功的话,将返回一个intptr_t型的唯一的查找用的句柄(就是一个唯一编号)。 若失败,则返回-1。

         if (-1 == handle)

                   return -1;

         //fprintf(fp,"positive/%s 0 ",fileinfo.name);                 //打印出找到的文件的文件名

         fprintf(fp, "%s ", fileinfo.name);

         while (!_findnext(handle, &fileinfo))                              //搜索与_findfirst函数提供的文件名称匹配的下一个实例,若成功则返回0,否则返回-1

         {

                   //fprintf(fp,"positive/%s 0 ",fileinfo.name);

                   fprintf(fp, "%s ", fileinfo.name);                 //把格式化字符串输出到指定文件中

         }

         _findclose(handle);                                              //关闭句柄           

         fclose(fp);

         //system("pause");   

 

         //2、将txt中的文件名称取出,利用sprintf得到png文件的路径

         ifstream file;

         file.open(nameList_txt);

 

         int img_index = 0;

         while (!file.eof())   //判断当前文件指针位置,是否处于文件结束位置

         {

                   char txt_cont[20];

                   file.getline(txt_cont, 20);    //读取file中一行数据,存放于txt_cont;

                   char img_file[200], save_file[200];

 

                   if (strlen(txt_cont)<1)    //上面生成的nameList_txt中尾部多了 ,不知道有没有更好的方法

                   {

                            break;

                   }

                   sprintf(img_file, "F: \RIDH2\%s", txt_cont);  //sprintf把格式化字符串输出到指定字符串

                   Mat src = imread(img_file);

                   Mat dst;

                   //cvtColor(src, dst, CV_BGR2GRAY);

                   /*sprintf(save_file, "F:\LiuHuan_File\RIDH1\save\%s", img_index);

                   img_index++;*/

 

                   sprintf(save_file, "F: \RIDH2\save\%s", txt_cont);

                   imwrite(save_file, src);

 

         }

         printf("output done. ");

         return 0;

}

以上是关于opencv对图片进行批处理的主要内容,如果未能解决你的问题,请参考以下文章

图片处理-opencv-2.图像平滑

OpenCV机器视觉-图片卷积

图片处理-opencv-10.图像锐化与边缘检测

SLAM数据集序列图片如何批量处理

图片处理-opencv-12.图像傅里叶变换

OpenCV-Python实战 —— OpenCV 实现批量将 bmppngjpg格式图片转换为 png 格式图片