OpenCV中文网站

 找回密码
 立即注册
搜索
热搜: 安装 配置
查看: 2993|回复: 0

android camera mjpeg图像缩放

[复制链接]
发表于 2018-5-24 11:00:25 | 显示全部楼层 |阅读模式
本帖最后由 fansmit 于 2018-5-24 11:38 编辑

各位搞opencv的朋友,最新我着手搞camera 数字变焦的功能,由于接触时间不长所以有很多东西还不太懂,请帮忙解答下。

最近正在android系统上搞camera mjpeg数字变焦功能,目前的方案是从camera_hal中拿到从usb camera获取的一帧mjpeg数据,然后调用opencv接口,设置ROI 然后resize 再将缩放后的数据交给camera_hal 继续解码处理。这个流程之前处理yuv camera数据时是没问题的 所以流程长应该ok。根据网上我的理解是,如果是字节数据直接将其赋给结构体的imageData即可,但是在处理mjpeg数据后发现显示不出来了。先贴下我的代码流程:代码如下: (由于使用代码格式总是把我代码弄丢只好用文本格式,请见谅)
=================================== 代码区 ===================================

1  pZoomsrcIplImg = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 3); //拿到的数据是1280 * 720
2  cvSetData(pZoomsrcIplImg, jpeg ,width*3);                                                   //jpeg是从camra中拿到的一帧数据 为char *类型

//使用fwrite将数据写到1.jpg中,在pc长可以正常打开显示,格式为YCbCr 422
3  write_jpg(pZoomsrcIplImg->imageData, "/data/1.jpg", size);

4  cvSetImageROI(pZoomsrcIplImg, cvRect(100, 100, 1000, 650));                   //设置感兴趣的区间作为用于放大的区域
5  pZoomdstIplImg = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 3);
6  cvResize(pZoomsrcIplImg, pZoomdstIplImg, CV_INTER_LINEAR);

//放大后的数据再通过fwrite写到2.jpg 发现图片不能显示了
7  write_jpg((char *)pZoomdstIplImg->imageData, "/data/2.jpg", pZoomdstIplImg->imageSize);

8  memcpy(buffer, pZoomdstIplImg->imageData, pZoomdstIplImg->imageSize);   //将数据写到buffer中传给camera底层接着处理

=================================== 代码区 ===================================

开始我以为是因为我逻辑的问题,但后来我在第3行后执行了下cvLoadImage("/data/1.jpg"); 然后执行同样的步骤缩放后使用cvSaveImage("/data/2.jpg", pZoomdstIplImg)将缩放后的数据写成2.jpg 发现图片就是放大后的,可以正常显示。但之后我再将他的imageData 使用fwrite再写成jpg文件发现就不能正常显示了。

请问是不是cvLoadImage拿出来的数据和 结构体中imageData的数据格式并不一样,而opencv缩放图像需要的是cvLoadImage拿到的数据格式。那我应该如何转换才能正常显示。





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站

GMT+8, 2024-3-28 23:21 , Processed in 0.009275 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表