【OpenCV應用筆記】(彩色/灰度)圖像像素值讀取並保存到txt文件
SkySeraph Feb 23rd 2012 SZTCL
Email:zgzhaobo@gmail.com QQ:452728574
-------------------------------------------------------------------------------------------------------------------------------------------------------------
一、啰嗦:
一個搞硬件的朋友要測試FPGA和PC機的CCD通訊,需用到圖像數據,找到我這個曾經"笑傲"實驗室的“圖像處理高手”,委托我寫一個小測試程序,將一副指定的圖像(彩色/灰度)轉換程txt文件保存到PC機上,Ta只要exe文件,代碼這玩意不需要...,情何以堪...還是動手寫了一個,測試通過,ok,見下....o(∩_∩)o
-------------------------------------------------------------------------------------------------------------------------------------------------------------
二、源碼
1 彩色圖像
①輸入:一副彩色圖像rgb.bmp
②輸出:D盤下的三個txt文件,分別為r.txt、g.txt、b.txt
③源碼:

1 /*===============================================//
2 功能:RGB讀取並保存
3 時間:02/23/2012 SkySeraph
4 //===============================================*/
5 #include "iostream"
6 #include <fstream>
7 using namespace std;
8
9 #include "cv.h"
10 #include "highgui.h"
11
12 #pragma comment(lib,"highgui.lib")
13 #pragma comment(lib,"cv.lib")
14 #pragma comment(lib,"cvaux.lib")
15 #pragma comment(lib,"cxcore.lib")
16
17 int main(int argc, char* argv[])
18 {
19 /* ①
20 IplImage*img = cvLoadImage("rgb.bmp",-1);
21 if(img==NULL)
22 return 0;
23 CvScalar p;
24 ofstream outfile("d:\\rgb.txt");
25 outfile<<"圖像寬和高:"<<img->width<<"*"<<img->height<<endl;
26 for(int i=0;i<img->height;i++)
27 {
28 for(int j=0;j<img->width;j++)
29 {
30 p = cvGet2D(img,i,j);
31 outfile<<p.val[0] <<" "<<p.val[1]<<" "<<p.val[2] <<" "<<endl;
32 }
33 }
34 */
35 ///* ②
36 IplImage* img = cvLoadImage("rgb.bmp",-1);
37 CvScalar p;
38 ofstream outfile1("d:\\b.txt");
39 ofstream outfile2("d:\\g.txt");
40 ofstream outfile3("d:\\r.txt");
41 outfile1<<"圖像寬和高:"<<img->width<<"*"<<img->height<<endl;
42 outfile1<<"圖像B值"<<endl;
43 outfile2<<"圖像寬和高:"<<img->width<<"*"<<img->height<<endl;
44 outfile2<<"圖像G值"<<endl;
45 outfile3<<"圖像寬和高:"<<img->width<<"*"<<img->height<<endl;
46 outfile3<<"圖像R值"<<endl;
47 //cvFlip(img);
48 for(int i=0;i<img->width;i++)
49 {
50 for(int j=0;j<img->height;j++)
51 {
52 p = cvGet2D(img,i,j);//(j,i)
53 outfile1<<p.val[0]<<" ";
54 outfile2<<p.val[1]<<" ";
55 outfile3<<p.val[2]<<" ";
56 }
57 outfile1<<endl;
58 outfile2<<endl;
59 outfile3<<endl;
60 } //*/
61
62 return 0;
63 }
④exe文件:rgb.zip
2 灰度圖像
①輸入:一副灰度圖像gray.jpg
②輸出:gray.txt
③源碼:

1 /*===============================================//
2 功能:Gray讀取並保存
3 時間:02/23/2012 SkySeraph
4 //===============================================*/
5 #include "iostream"
6 #include <fstream>
7 using namespace std;
8
9 #include "cv.h"
10 #include "highgui.h"
11
12 #pragma comment(lib,"highgui.lib")
13 #pragma comment(lib,"cv.lib")
14 #pragma comment(lib,"cvaux.lib")
15 #pragma comment(lib,"cxcore.lib")
16
17
18 int main(int argc, char* argv[])
19 {
20 IplImage* img = cvLoadImage("gray.jpg",0);
21 CvScalar p;
22 ofstream outfile1("d:\\gray.txt");
23 outfile1<<"圖像寬和高:"<<img->width<<"*"<<img->height<<endl;
24 outfile1<<"圖像像素值"<<endl;
25 //cvFlip(img);
26 for(int i=0;i<img->width;i++)
27 {
28 for(int j=0;j<img->height;j++)
29 {
30 p = cvGet2D(img,i,j);//(j,i)
31 outfile1<<p.val[0]<<" ";
32 }
33 outfile1<<endl;
34 } //*/
35
36 return 0;
37 }
④exe文件:gray.zip
-------------------------------------------------------------------------------------------------------------------------------------------------------------
三、效果
彩色為例,源圖像
r.txt(部分):gray.zip
其它類似,不再啰嗦...
-------------------------------------------------------------------------------------------------------------------------------------------------------------