c++中用openCV的IplImage*或Mat读取图片后如何转化为File文件流(或者二进制数据)的格式

需要使用c++对图片进行post请求上传,http-body的上传图片格式为File类型。
但是我的图片必须通过openCV读取:
IplImage* pImg1 = cvLoadImage("照片(1).jpg"); 或者
cv::Mat mat = cv::imread("照片(1).jpg");
是IplImage* 或cv::Mat类型的,这样读取的图片是像素值,转化为char* 进行post上传后图片格式不符合File类型,所以怎样能把IplImage* 或cv::Mat类型的图片转化为与HTTP-body对应的File类型(或者二进制数据)进行上传呢?或者有其他的方式,麻烦大家帮忙解决下,谢谢!
(备注:不要将图片保存到本地后读取再上传,这种方式太慢)

3个回答

cv::Mat本身存储的是数组,所以最简单的思路是把它当作数组处理。通过cv::Mat.at函数遍历cv::Mat中存的所有数据,需要考虑图像的类型(RGB/Grey等),取出每一个像素点对应的值,然后就可以随便玩了,比如通过转换成json格式,就可以序列化传输和解析了。

现在用openCv编程,一般都用C++的Mat格式,可是总是用其他人代码时碰到IplImage格式,转换是个很头疼的事,这里是平时用到的一些方法:

1.IplImage转Mat

IplImge* src=cvloadImage("F:\image.jpg");
cv::Mat ima_mat(src,true);

其中,后一个参数代表深浅复制,true代表全新的拷贝,false代表指向同一内存块。

2.Mat转IplImage

Mat m;
IplImage *src=&m.operator IplImage();

3.Mat间的复制

一般的=只能完成浅复制,是无法深复制的,所以要利用copyTo来完成深复制

Mat image1,image2,image3;
image1=imread("ima.jpg",0);
image2=image1;//浅复制
image1.copyTo(image3);//深复制

先这些吧

bao_yanjun
bao_yj 首先很感谢您的帮助,但是你没有理解我问的问题,我不是问IplImage和Mat之间的转化,这个百度到处都是,请仔细阅览问题谢谢。 我问的是,对于IplImage或Mat类型的图片进行post请求上传(图片格式要求是File类型),由于是像素值,不是File类型,上传会报图片格式错误,这种情况如何解决。
大约一年之前 回复

如果你需要转成流发送到其他电脑或者需要通信,有个 简单的方法,之前我们用过,直接用7z的借口压缩一下 以16禁止读取 即减少了包的大小 也转换成数字流了 亲测实用。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c++中用openCV的IplImage*或Mat读取图片后如何转化为File文件流(或者二进制数据)的格式
需要使用c++对图片进行post请求上传,http-body的上传图片格式为File类型。rn但是我的图片必须通过openCV读取:rnIplImage* pImg1 = cvLoadImage("照片(1).jpg"); 或者rncv::Mat mat = cv::imread("照片(1).jpg");rn是IplImage* 或cv::Mat类型的,这样读取的图片是像素值,转化为char* 进行post上传后图片格式不符合File类型,所以怎样能把IplImage* 或cv::Mat类型的图片转化为与HTTP-body对应的File类型(或者二进制数据)进行上传呢?或者有其他的方式,麻烦大家帮忙解决下,谢谢!rn(备注:不要将图片保存到本地后读取再上传,这种方式太慢)
Opencv:IplImage*转Mat后的内存泄露问题
用Windows的API获得一个BMP的句柄,并将其转换到IplImage格式,然后再转到Mat类型。但在这里注意到会发生一个内存泄露的问题,记录下来。
ImageMagick++格式转化为Opencv的Mat格式
在图像处理领域opencv是我们常用的,ImageMagick也是使用的图像处理软件之一,在这里面有时候常常有内部结构的相互转换,这里先贴出一个image++中的Magick::Image格式转为Opencv中的Mat格式 int magick2IplImage(Magick::Image magickImage,cv::Mat &imgMat) { //get width height i
python中,opencv图片对象如何转化为二进制文件流
对于:nn```n cap = cv2.VideoCapture(0)n while(True):n ret, frame = cap.read()n```nnn对于frame, 要把它转化成nnn```n fout = open("路径", "rb")n frame = fout.read()n fout.closen```n要使得2个frame的格式是一样的,如何转换。n目的是因为使用的一个API需要传入二进制文件流,但是摄像头用opencv打开后每帧的对象并不是二进制的。nn
Opencv中如何将IplImage转换为Mat格式的图片?
例如本人在项目中遇到的问题,最终通过如下问题得到了解决,代码片如下:     Mat B;     IplImage *grayImage;     IplImage *tempFrame= cvLoadImage("couple.bmp");     grayImage = cvCreateImage(cvSize(tempFrame->width, tempFrame->height)
opencv 下 IplImage 如何转换为mat
我现在需要把IplImage结构体转换为Mat结构体,不知道怎么转换,网上看的试了一下不行啊,强制转换也提示不行,rn求指教!!
Opencv Mat与Iplimage的相互转换
Mat
Mat格式与IplImage格式转换
Mat转IplImage格式 Mat src; IplImage* dst=&IplImage(src); IplImage 转Mat格式 IplImage* src; cv::Mat   dst=(src,1);
opencv中Mat和IplImage打开图片区别
首先你得配置好opencv环境,加载库。并且在#include记得加入你所使用带的opencv文件。例如等。记得域名空间“cv”。 下面测试下opencv是否能够使用了。使用Mat. Mat I=imread("/home/cheng/Desktop/img.jpg"); cvtColor(I,I,CV_BGR2GRAY); Mat contours; Canny(I,contou
IplImage* 格式与Mat 格式的转换
IplImage * img; Mat temp = cvarrToMat(img); // IplImage* 格式 ==》 Mat 格式 img = (IplImage *)&temp; // IplImage* 格式 《== Mat 格式 ...
IplImage与Mat类,C语言opencv编程
下面函数是在vs2013工程下的.c文件下实现的,由于c语言与c++的差异,使得.c文件不能使用Mat类 程序可以作为纯C语言下使用opencv得实例: #include"stdio.h" #include <cv.h> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui...
OpenCV中IplImage 与Mat的相互转换
(1)IplImage->Mat IplImage * img = cvLoadImage("1,jpg"); Mat mat=cvarrToMat(img);
opencv中Mat与IplImage的相互转换
opencv中实行Mat与IplImage的相互转换
Mat文件转IplImage文件
处理图片时可能会用到不同的格式,解决办法                            IplImage pout_L = imD;               IplImage pout_R = imD2;               cvSaveImage(out_fn_L, &pout_L, NULL);               cvSaveImag
将IplImage转换为Mat
让自己学会记录而已。 Mat::Mat(const IplImage* img, bool copyData=false); 默认情况下,新的Mat类型与原来的IplImage类型共享图像数据,转换只是创建一个Mat矩阵头。当将参数copyData设为true后,就会复制整个图像数据。 例: IplImage*iplImg = cvLoadImage("1.jp
opencv 如何把MAT 或IplImage* 转换bitmap
使用OPENCV处理一幅图片,请问怎么把处理好的图片在转换为bitmap或hbitmap呢rn下面代码吧MAT转为 HBITMAP 但是图片不能显示 不知道是什么原因rn[code=c]rn int nChannels=(g_dstImage.type()>>3)-CV_8U+1;rn int iSize=g_dstImage.cols*g_dstImage.rows*nChannels;rn HBITMAP hpic2=CreateBitmap( g_dstImage.cols,g_dstImage.rows,rn 1,nChannels*8,g_dstImage.data);rn[/code]
bmp2c 二进制图片转化为c数组
源码vc++环境,如有疑问,请email:aune2004@163.com
将二进制深度图转换成OpenCV的Mat格式
日常在使用深度相机(Xtion之类)时,有时没有OpenCV的环境,就会把数据保存成16位的二进制dat文件,但是之后我们的处理一般都是在OpenCV里面的,这时就需要将二进制深度图转换成Mat格式,下面这段例子就实现了这个功能。 #include <iostream> #include <string> #include <fstream>#include <opencv2/opencv.hpp>
openCV3 Mat图像转化为IplImage图像并显示
#include&amp;lt;opencv2\opencv.hpp&amp;gt; #include&amp;lt;highgui.h&amp;gt; using namespace cv; int main() { Mat image = imread (&quot;1.jpg&quot;); IplImage result = IplImage(image); const CvArr* I = (CvArr*)&amp;amp;result;...
将图片转化为pickle或者mat数据格式
为了做小样本的实验,所以需要先将图片数据转化为pickle或者mat格式的数据,便于以后的读取,避免每次训练的时候,都要重新挨个图片读取在给标注。 这里我是看的tensorflow和Udacity合作的视频教程,所以学习到了将数据做乘pickle格式的方法 try: with open(set_filename, 'wb') as f:...
Opencv 视频转化为图片
vs2008 Opencv2.4.2 视频如何转化图片的代码,使用Opencv函数。
Opencv视频转化为图片
这里把视频的一部分剪切出来,同时保存为图片和视频格式。通常是先把视频放一面,记下剪切段儿的帧数,再处理。 注意代码中视频的名字,像素及剪切的帧数等需要自己更改。 源码:#include <opencv2\opencv.hpp> #include <cstdio> using namespace cv; int main( ) { //【1】读入视频 VideoCap
将人脸图像集转化为mat格式
网上下载人脸数据集时,往往得到的是图片或者是维度太小的mat格式。因此提供了由图片转化为mat格式的代码。代码中包含了如何修改的注释
IplImage、IplImage、Mat之间的转换
IplImage、IplImage、Mat之间的转换
opencv小记:IplImage与Mat之间的转换
一个学习小记
opencv的三种数据结构CvMat IplImage Mat 读取示例
//CvMat和IplImage属于opencv1 //Mat属于opencv2 //#include opencv2/opencv.hpp using namespace cv;void main() {int a[3][4]={1,2,3,4, 5,6,7,8, 9,10,11,12}; CvMat Ma; cvInitMatHeader(&Ma, 3, 4, CV_32SC1, a);
opencv .jpg格式转化为bmp格式
与直接用软件转化图片格式不用,此代码可以无损转换图片格式
opencv两种图像格式IplImage和Mat的透视变换
opencv两种图像格式IplImage和Mat的透视变换#include <stdlib.h> #include <stdio.h> #include <pthread.h> #include <string> #include <libgen.h> #include "cv.h" #include "highgui.h" #include <stdio.h> #include <stdlib.h
OpenCV 图像类型写法与转换:Mat和IPLImage
转自:https://blog.csdn.net/qq_37764129/article/details/81271660 OpenCV1基于C接口定义的图像存储格式IplImage*,直接暴露内存,如果忘记释放内存,就会造成内存泄漏。从OpenCV2开始,开始使用Mat类存储图像,其新的C++接口,cv::Mat代替了原来c风格的CvMat和IplImage。目前,2.0版本对c的接口也是支持的...
OpenCV Mat和IplImage比较以及相互转换
Mat常用的五个函数 1.图像载入函数Mat myMat= imread("test.jpg"); 2.窗口定义函数namedWindow("原图"); 3.图像显示函数 imshow("原图",myMat); 4.图像保存函数 imwrite("test1.jpg",myMat); IplImage常用的五个函数 1.图像载入函数IplImage* img; img=cvLoadImag
【OpenCV 基础】Mat和IplImage间的相互转换
代码如下:/*========================================================== * 文件名 : Util * 日期 : 2015/9/7 * 功能 : 实现一些工具函数,如Mat和IplImage的相互转换等 * ==========================================================*/#i
IplImage类型如何转化为Image
rn本人现在遇到的问题是:想把Opencv中IplImage类型的图像转化为Image类型,以便将图像显示在 PictureBox控件上,希望各rnrn位高手给予指点,谢谢!
matlab高效率将各种格式图片转化为mat文件
很方便的matlab代码,高效图片转mat文件
OpenCV绘制文字的代码及Mat/IplImage的转换
  特别注意IplImage与Mat的转换。 static void draw_count(FrameData* pFrame) { CvSize size; if (!(pFrame-&amp;gt;buffer.data)) { return; } size.width = pFrame-&amp;gt;size2d.width; size...
第五篇:在opencv中iplimage转化成Mat
在第一篇中我将Mat转化成了iplimage,使用Mat是写程序变得方便了,但是,目前很多opencv中的函数的功能使用iplimage类型的图像显然要方便,很多函数直接调用的参数还不支持Mat,只支持iplimage,所以,有必要在整个程序框架下,保持图形调用类型一致,建议在整个框架下使用Mat类型,对于需要使用iplimage类型的函数,进行转化,这样尽量保持使用的类型一致,增强图片的可读性。
TXT数据转OpenCV中的Mat数据
最近需要利用深度图做一些东西,就在网上下了一些数据(http://eeeweba.ntu.edu.sg/computervision/people/home/renzhou/HandGesture.htm),该数据集包含了彩色图及对应的深度图,但是该数据集没有以图像形式存储深度值,而是用txt文本以行列形式存储真正的深度值(单位为mm),所以并不能直观的看到深度图像,我需要把这些深度值从txt文本提
【opencv】cvmat、IplImage、Mat之间的转换
CvMat、IplImage转换为Matopencv3.0中 Mat(CvMat *M,bool copydata=false)这个构造函数已经不再使用,而有函数:Mat cvarrToMat(const CvArr *arr, bool copyData=false, int coiMode=0, ) Cvarr可以是CvMa
OpenCV Mat类型与IplImage类型的相互转换
自OpenCV2.x以后,代码风格由C变为C++,同时引进了Mat类型。这使得之前一些优秀的代码案例没办法直接移植,当然可以把代码重新写一遍,全部换成C++风格和Mat类型,但是如果只是测试使用的话,使用类型转换会更为方便。 IplImage转Mat 直接使用Mat的构造函数,原型如下: Mat(const IplImage* img, bool copyData=false); 第一个
OpenCV中IplImage与Mat代码风格比较
本文是对 IplImage与Mat相关代码的部分比较。
opencv中mat和指针IplImage的转换
IplImage转matIplImage* img; Mat test = cv::cvarrToMat(img); mat转IplImage IplImage *frame;Mat img;frame = &IplImage(img);
相关热词 c# 线程结束时执行 c# kb mb 图片 c# 替换第几位字符 c#项目决定成败 c# 与matlab c# xml缩进 c#传感器基础 c#操作wps c# md5使用方法 c# 引用父窗口的组件