• 转自:http://blog.csdn.net/hei_ya/article/details/51387624在生成训练集的时通常需要对文件夹中图片进行批处理,本文简要介绍图像批量读取、处理、保存的方法。方法一:1.生成图片描述文件 对于有多幅图像的...

    转自:http://blog.csdn.net/hei_ya/article/details/51387624

    在生成训练集的时通常需要对文件夹中图片进行批处理,本文简要介绍图像批量读取、处理、保存的方法。


    方法一:

    1.生成图片描述文件

        对于有多幅图像的文件夹,首先生成txt文件,保存图片路径。


       在DOS模式下导入文件夹路径并生成TXT文件:



    2.通过TXT批量处理图片

    <span style="font-size:18px;">#include<opencv2/opencv.hpp>
    #include<iostream>
    #include<time.h>
    #include<fstream>
    
    using namespace std;
    using namespace cv;
    
    void main()
    {
    	ifstream file("C:/Users/Administrator/Desktop/date/MIT/MIT人脸库/faces/face.txt");
    
    	int img_index = 0;
    
    	while (!file.eof())
    	{
    		char txt_cont[200];
    		file.getline(txt_cont,200);
    
    		char img_file[200],save_file[200];
    
    		sprintf(img_file, "C:/Users/Administrator/Desktop/date/MIT/MIT人脸库/faces/%s", txt_cont);
    		sprintf(save_file, "C:/Users/Administrator/Desktop/date/MIT/MIT人脸库/save/%d.jpg", img_index);
    
    		Mat src = imread(img_file);
    
    		img_index++;
    		
    		imwrite(save_file,src);
    	}
    	
    }</span>

    方法二:

    利用Directory类实现文件夹中特定格式图像的遍历,Directory的头文件是windows.h。

    #include<opencv2/opencv.hpp>
    #include<iostream>
    #include<vector>
    #include<string>
    #include <windows.h>
    
    using namespace std;
    using namespace cv;
    
    
    void main()
    {
    	Directory dir;
    
    	string path1 = "C:\\Users\\Administrator\\Desktop\\date\\MIT\\MIT人脸库\\faces";
    	string  exten1 = "*.bmp";
    
    	vector<string> filenames = dir.GetListFiles(path1, exten1, false);
    
    	int size = filenames.size();
    
    	for (int i = 0; i < size;i++)
    	{
    		cout << filenames[i] << endl;
    	}
    }

    2. Directory类定义为

    class CV_EXPORTS Directory  
    {  
    public:  
        static std::vector<std::string> GetListFiles  ( const std::string& path, const std::string & exten = "*", bool addPath = true );  
        static std::vector<std::string> GetListFilesR ( const std::string& path, const std::string & exten = "*", bool addPath = true );  
        static std::vector<std::string> GetListFolders( const std::string& path, const std::string & exten = "*", bool addPath = true );  
    };  

    具体用法如下,使用这个类时,应该加上contrib.hpp头文件

    #include <iostream>  
    using namespace std;  
      
    #include <opencv2\opencv.hpp>  
    #include <opencv2\highgui\highgui.hpp>  
    #include <opencv2\contrib\contrib.hpp>  
    using namespace cv;  
      
    int main(int argc, char* argv[])  
    {  
        string dir_path = "D:\\opencv_pic\\test\\";  
        Directory dir;  
        vector<string> fileNames = dir.GetListFiles(dir_path, "*.jpg", false);  
      
        for(int i = 0; i < fileNames.size(); i++)  
        {  
            //get image name  
            string fileName = fileNames[i];  
            string fileFullName = dir_path + fileName;  
            cout<<"File name:"<<fileName<<endl;  
            cout<<"Full path:"<<fileFullName<<endl;  
      
            //load image  
            IplImage* srcImg = cvLoadImage(fileFullName.c_str(), CV_LOAD_IMAGE_UNCHANGED);  
            cvShowImage("src", srcImg);  
            cvWaitKey(0);  
        }  
        return 0;  
    }  
    参考:http://blog.csdn.net/qq_34784753/article/details/68935628


    展开全文
  • 背景:某文件夹X下有若干张图片,对每一张图片进行处理,将处理后的图片保存至新的文件夹Y下。#include &lt;opencv2/core/core.hpp&gt; #include &lt;opencv2/highgui/highgui.hpp&gt; #include &...
  • OpenCV批量处理图像 2020-06-09 14:49:21
    分享一点应用OpenCV的小经验。有很多时候,我们需要对一个文件夹内的所有图像进行处理,这时一张张的Ctrl+F5就让人太蛋疼了,所以就产生了图像批量处理。文档里有原码哟。
  • opencv 批量处理图像 2019-07-30 08:40:25
    为了批量处理图像,网上找了好久,基本上都是C语言的sprinrf() 和 sprinrf_s()的方法;参数输入 只能是 char* 类型; 我下面献上C++的简洁方法。 #include <opencv2/opencv.hpp>#include <iostream>#...
  • opencv3.x批量处理图像
  • opencv 批量图像读写 2019-08-06 17:41:24
    处理图像数据集时通常要读写整个文件夹里的图像,这时就会用的图像批量读写。 比较常用的方法就是生成一个包含所有图像的txt列表 生成txt文件的方法如下: 利用cmd进入dos 利用路径进入指定文件夹后生成txt...
  • 在Tensorflow之十五讲到采用python网络爬虫批量抓取图像,然而,由于抓取的图像尺寸不一,同时大多为RGB三通道的图像,因此需对图像进行...一、Opencv图像处理过程1.1 读取原图import cv2 import numpy as np input_
  • 在进行图像处理等问题是面临的一个问题是如何批量的处理图片,这些图片存在在一个文件夹中,如何对这个文件夹中的数据进行批处理是非常重要的,下面介绍几种常用的方法。1. sprintf()函数法这种方法最为简单,他是将...
  • 目的:实现图像批量读取、裁剪、写入指定的文件夹 import cv2 import glob i = 0 for jpgfile in glob.glob(r'G:\Image\*,jpg'): image = cv2.imread(jpgfile) print(image.shape) #print(image.shape[0]) #...
  • import os import cv2 path = "E:/JPEGImages/"...#批量缩放 # width = 1024 # height = 768 # for filename in os.listdir(path): # im = cv2.imread(path + filename) # if im.shape[1]==2592: # tem...
  • 椒盐噪声 ...opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <cstdlib> #include <iostream> using na...
  • 利用opencv3.0和vs2015配置环境对多张图像进行灰度化处理
  • opencv处理图像,特别涉及到机器学习算法训练模型时,需要批量地读取图像。方法1:比较简单,唯一的要求就是文件夹下的图片名称是有规律的,如 ***(0)、***(1)、***(2)、***(3)·····#include "opencv2/...
  • OpenCV玩耍(一)批量resize一个文件夹里的所有图像 ...鉴于用caffe做实验的时候,里面牵扯到一个问题是必须将训练集和测试集都转成256*256的图像,而官网给出的...本博客详细讲解了如何使用opencv批量处理图...
  • OpenCV批量图像重命名 2016-11-18 16:39:51
    以下程序环境为OpenCV2.4.4 #include #include #include #include using namespace std; using namespace cv; #define IMAGENUM 116 int main() { Mat src; string ImgName; char OutName[50]; ...
  • 1 //采用windows控制台实现计算文件夹中对象总数以及批量读取对象 2 3 //#include <afx.h> //和windows.h是一样的作用 4 #include <opencv2/opencv.hpp> 5 #include <windows.h> 6 ...
  • opencv 批量修改图片尺寸 2018-08-14 12:38:35
    opencv2/opencv.hpp&gt; #include&lt;iostream&gt; using namespace cv; using namespace std; int main() { int a = 1; char path[90]; for (a = 1; a &lt; 401; a++) { if (a &lt; ...
  • 定义2个string字符串分别得到原图片所在文件夹和处理后的图片所在文件夹,注意在获得文件夹名的时候,把i转化成字符串ss进行连接。 #include "opencv2/opencv.hpp" #include "opencv2/imgproc/...
  • 废话不多说,直接上代码 import sys sys.path.append('/usr/local/lib/python2.7/dist-packages/') from skimage import measure import numpy as np import cv2 import skimage.io as io str="D:/ruanjianxiazai/...
  • 在利用opencv进行图像处理时,通常需要批量读取图片,然后做相应的处理,我们可以用C++文件的输入流来进行图片的读取,这要求我们应该事先,将图片图片名生成txt文件,具体请参见之前的博文【ubuntu中获取文件名称...
1 2 3 4 5 ... 20
收藏数 2,994
精华内容 1,197