批量读取并保存某一文件夹下图片的像素值

功能介绍:对文件夹下的图片存储指定坐标点的像素值至txt文件中~

// 存储文件夹下图片RGB值至文本中.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<stdio.h>
#include"stdlib.h"   //system需要调用这个
#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
#include <string>
#include<windows.h>
#include <WinBase.h>
#include <ctime>
#include "highgui.h" 
#include <iostream>
#include <fstream>
#include <ml.h>     
using namespace std;
int main( int argc, char** argv )
{
	int image_id = 1;
	char filename[256];
	char filename2[256];
	char winname[256];
	IplImage *image=0,*imageresize=0;  
	sprintf(filename , "D:\\My Documents\\Visual Studio 2008\\Projects\\存储文件夹下图片RGB值至文本中\\截图\\%d.bmp" , image_id );
	IplImage* img = cvLoadImage(filename);
	ofstream fout("Bmat.txt");  /* 保存样本 */
    CvScalar s;
	cout<<"\n 开始保存咯\n";
	int q=0;
  
	while(img)
	{
	
	sprintf(winname , "D:\\My Documents\\Visual Studio 2008\\Projects\\存储文件夹下图片RGB值至文本中\\截图\\%d.bmp" , image_id );
	IplImage* img = cvLoadImage(winname);
	 CvScalar s;
	 if (!img)//若无此步,会在最后一个循环时由于下一句的img变量不存在而报错!
		 break;//若无此步,会在最后一个循环时由于下一句的img变量不存在而报错!
	 s=cvGet2D(img,3,19); //获取src图像中坐标为(i,j)的像素点的值
	 //s.val[0] 代表src图像BGR中的B通道的值~
	 fout<<s.val[0];
	 fout<<"\t";
	 fout<<s.val[1];
	 fout<<"\t";
	 fout<<s.val[2];
	 fout<<"\t";
	 fout<<"1\n";
     cvSet2D(img,3,19,s);       //set the (i,j) pixel value
	 q++;

	    s=cvGet2D(img,6,19); //获取src图像中坐标为(i,j)的像素点的值
     //s.val[0] 代表src图像BGR中的B通道的值~
	 fout<<s.val[0];
	 fout<<"\t";
	 fout<<s.val[1];
	 fout<<"\t";
	 fout<<s.val[2];
	 fout<<"\t";
	 fout<<"1\n";
     cvSet2D(img,6,19,s);       //set the (i,j) pixel value
	 q++;

	    s=cvGet2D(img,5,25); //获取src图像中坐标为(i,j)的像素点的值
     //s.val[0] 代表src图像BGR中的B通道的值~
	 fout<<s.val[0];
	 fout<<"\t";
	 fout<<s.val[1];
	 fout<<"\t";
	 fout<<s.val[2];
	 fout<<"\t";
	 fout<<"1\n";
     cvSet2D(img,5,25,s);       //set the (i,j) pixel value
	 q++;
	 cvReleaseImage(&img);
	image_id++;
	sprintf(filename , "D:\\My Documents\\Visual Studio 2008\\Projects\\存储文件夹下图片RGB值至文本中\\截图\\%d.bmp" , image_id );
	}
	
		
		
	
	cout<<"\n 保存完毕! \n";
	cout<<"矩阵一共有"<<q<<"行"<<'\n';
	system("PAUSE");  
}


你可能感兴趣的:(C++,opencv,存储坐标值)