• opencv中的图片流保存


    做图片流处理的时候总是保存不对,

    图片如下

    用如下代码保存,其中Arr是byte数组

        //IplImage *img = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, Channels);
        //IplImage *img = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 3);
        //cvZero(img);
        //img->imageData =(char*) Arr;
        //img->imageDataOrigin= (char*)Arr;
        //cv::Mat mImg(img, 0);
        

    这种效果

        //Mat mImg(height, width, CV_8UC(Channels), (uchar*)Arr);
        //Mat mImg(height, width, CV_8UC(depth), (uchar*)Arr);
        //IplImage *img = &IplImage(mImg);
    
    
        imwrite(LPCSTR(csFile), mImg);

             

    我需要冷静一下!!!!!!

    研究了一下,改成如下

        IplImage *img = cvCreateImageHeader(cvSize(width, height), IPL_DEPTH_8U, Channels);
        cvSetData(img, Arr, Channels*width);
        cv::Mat mImg(img, 0);

    终于完美还原,问题来了,什么原因呢?

    其实要想完美实现图片流解析,还是很简单的,主要,要找到对应的opencv的api

    int getCvArr( byte*    Arr, int size){
        vector<char> vec;
        for (int i = 0; i < size; i++) {
            vec.push_back(*(Arr+i));
        }
        Mat mImg = imdecode(Mat(vec), 1);
    }

     其中的imdecode

    CV_EXPORTS_W Mat imdecode( InputArray buf, int flags );

    使用了Mat(vec)装换成InputArray类型

    文件转化成为字节流

        #include <fstream>
            ifstream infile;
        infile.open("D:/facesdktest/testproject/1_chenkun.jpg", ios::binary);
        if (!infile) { return; }
        infile.seekg(0, ios::end);
        unsigned long len = infile.tellg();
        BYTE *buffer = new BYTE[len];
        infile.seekg(0, ios::beg);
        infile.read((char*)buffer, len);
        //还有些检查流状态,上一次操作状态函数
        infile.close();    

    其中buffer是字节流的指针,len是字节流的长度

    Mat转数据流,便于网络传输二进制流

  • 相关阅读:
    Android压缩图片到100K以下并保持不失真的高效方法
    Android 动画学习笔记
    JAVA jdbc连接Mysql
    android 在myeclipse中查看源码
    Intent用法总结
    Android中加载数据库到data/data下的当前包中
    Android Paint类介绍
    经典常用SQL语句大全
    android 语音识别技术
    Insert multi user or more than one user in SharePoint list Person or Group field
  • 原文地址:https://www.cnblogs.com/baldermurphy/p/6771224.html
Copyright © 2020-2023  润新知