zoukankan      html  css  js  c++  java
  • 【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



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

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


    作者:skyseraph
    出处:http://www.cnblogs.com/skyseraph/
    更多精彩请直接访问SkySeraph个人站点:http://skyseraph.com//
    Email/GTalk: zgzhaobo@gmail.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    开采镍矿与冶炼加工镍的上市公司一览(转载)
    2010年螺纹期货基本走势分析(个人分析原创文章)
    从松柏那转载的ajax类
    推荐30个可以养站的博客(转载)
    年报掘金:机构增仓路线图曝光(20100306转载)
    一个人过习惯了,两个人不知道怎么过。。。
    各大搜索引擎的网站登录入口(转载)
    志向
    主力做庄骗术
    网上发现襄阳市场,说是正品,初步推断举步维艰
  • 原文地址:https://www.cnblogs.com/skyseraph/p/2365542.html
Copyright © 2011-2022 走看看