【OpenCV應用筆記】(彩色/灰度)圖像像素值讀取並保存到txt文件


【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

③源碼:

View Code
 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

③源碼:

View Code
 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



其它類似,不再啰嗦...

-------------------------------------------------------------------------------------------------------------------------------------------------------------


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM