视讯稳定的日志

本文详细阐述了视讯稳定处理的流程,包括光流计算、累加与平均操作,以及最终的转换矩阵求解。讨论了将程序应用于视频实时处理时遇到的限制与bug排查过程,特别关注了vector与deque的区别及其在实际应用中的影响。同时,深入探讨了OpenCV中IplImage图像与BYTE图像数据之间的转换技巧,包括cvCreateImageHeader与cvCreateImage的区别,以及如何实现数据的高效转换。

这两天在调视讯稳定的code。

说说整个的流程吧,有个总体的思路才好理清楚。

视讯稳定的code 是W老师给的,不是很熟悉,只是知道开始计算 光流,后面计算累加 在后面就是几帧的平均

最后就是 求一个转换矩阵吧。

程序最早就可以用 是直接输入一个视频 可以输出处理之后的图片。

然后我可以把处理之后的图片写在一个文件夹下

1. 首先是把这个程序变成处理完前面的三个步骤,然后把最后一个一步 处理一个图片 显示一个图片 看上去像处理的实时的。实际上不是。

2. 把视频改成一帧一帧处理的,对于视频来说,从第二帧开始一帧处理一个。我打印出来的时候发现输出的内容不对,开始一直以为是vector 里面读取的数据不对,想改掉这个bug 但是没有成功。

昨天晚上码神 查出来bug 的原因是 因为maxframe 的原因,对于一个视频,maxframe 是固定的,vextor 是一个递增的分配内存的这么一个东西,来一帧分配一片内存,vector 的size 一般会比maxframe 的小。

限定条件除了问题。另外的一个问题是 之前是i+j 我后面改成k+j 但是之前的i+j 的i 是从0 开始,所以应该改为看k-1

+j  索性把k=1 改成k=0  好像我之前尝试过把k=1 变成k=0 但是报错,就没有改这个问题(拖延症)。

3. 第三个就是框架的问题,我是一直没想清楚这个事该怎么干。

 CY 是这么干的,因为输入的 BYTE  然后 BYTE  可以转换成Ipimage 类型的 然后转成mat 类型的。

Ipimage *img=cvCreateImageHeader(cvSize(inWidth,inHeight),IPL_DEPTH_8U,3);

img->imageData=inputImg

把char型的inputImg 转成 Ipimage, Ipimage  转 Mat  Mat  cur(img)

Mat- Ipimage-> BYTE

Ipimage *src_resize=cvCreateImageHeader(size,IPL_DEPTH_8U,3);

src_resize->imageData=outputImg;

// 在网上找到的答案:

OpenCV中IplImage图像格式与BYTE图像数据的转换

IplImage* iplImage;

BYTE* data;

1 由IplImage*得到BYTE*图像数据:

data = iplImage->imageDataOrigin; //未对齐的原始图像数据

或者

data = iplImage->imageData; //已对齐的图像数据

2 由BYTE*得到IplImage*图像数据

iplImage = cvCreateImageHeader(cvSize(width,height),depth,channels);

cvSetData(iplImage,data,step);

// 转载自这个博客:

http://blog.youkuaiyun.com/scudz/article/details/8083866 里面讲的比较清楚

但是我还是没有弄明白 :cvCreateImageHeader  与之前的cvCreateImage 的区别在哪里:

vector 跟deque  的区别在哪里

vector 是一直自增的一个向量,当视频实时处理时, 会一直自增。会溢出而死/

deque 是一个循环队列(?),但是我可以设置长度,比如deque.size() 的尺寸大于一个数时,我们就把前面的数据pop掉。逻辑关系是 deque.pop_front()  然后在deque.push_back()  这样

想清楚了 心灵就自由



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值