cv::Mat 的数据拷贝
来源:互联网 发布:匹配声音软件是什么 编辑:程序博客网 时间:2024/06/09 19:35
今日做跟踪,每次要处理两帧图片,处理完要将curFrame复制给preFrame,然后再读一幅新图片。
以下测试了3种方式数据拷贝的效率,详见代码。
int main(int argc, char* argv[]){Mat preFrame;Mat curFrame;preFrame = imread("E:\\001.bmp");curFrame = imread("E:\\005.jpg");cout<<"========直接用swap=========\n";int64 st1,et1;st1 = cvGetTickCount();for (int i=0;i<1001;i++){swap(preFrame,curFrame);}et1 = cvGetTickCount(); printf("swap 1000 times cost: %f milliseconds\n\n", (et1-st1)/(double)cvGetTickFrequency()/1000.0); imshow("frame 1",preFrame);imshow("frame 2",curFrame);cvWaitKey(-1);cout<<"========通过第三者交换=========\n";Mat tmp;st1 = cvGetTickCount();for (int i=0;i<1001;i++){tmp = preFrame;preFrame = curFrame;curFrame = tmp;}et1 = cvGetTickCount(); printf("swap 1000 times cost: %f milliseconds\n\n", (et1-st1)/(double)cvGetTickFrequency()/1000.0); imshow("frame 1",preFrame);imshow("frame 2",curFrame);cvWaitKey(-1);cout<<"========强行拷贝=========\n";st1 = cvGetTickCount();for (int i=0;i<1001;i++){preFrame.copyTo(tmp);curFrame.copyTo(preFrame);tmp.copyTo(curFrame);}et1 = cvGetTickCount(); printf("swap 1000 times cost: %f milliseconds\n", (et1-st1)/(double)cvGetTickFrequency()/1000.0); imshow("frame 1",preFrame);imshow("frame 2",curFrame);cvWaitKey(-1);getchar();return 0;}
结果为:
- cv::Mat 的数据拷贝
- cv::Mat 图像拷贝、复制的问题
- cv::Mat的介绍
- cv::Mat类型数据和IplImage类型数据的转换
- cv::Mat 访问数据错误
- cv.Mat 与 .txt 文件数据的读写操作
- cv::mat的基本操作
- opencv cv::Mat的用法
- cv::mat的基本操作 ***** **
- cv...Mat...
- cv:Mat
- cv::mat
- cv:mat
- cv::Mat
- cv::Mat
- StretchDIBits 直接使用cv::Mat的数据有可能显示错误的问题
- OpenCV2 笔记:cv::Mat_<> 与 cv::Mat 的小区别
- OpenCV学习笔记(23)cv.Mat 与 .txt 文件数据的读写操作
- poj 2960 S-Nim(博奕)
- poj 1704 Georgia and Bob(博奕)
- 对象数据复制处理
- 几种经典的网络服务器架构模型的分析与比较
- [Flex]Flex编程注意之Namespace的用法
- cv::Mat 的数据拷贝
- 从飞秋爱好者的角度看飞秋
- PJLIB库基础框架-数据结构之数组的使用
- h264检测是I帧还是P帧,解决录像第一帧有马赛克问题
- wx.MessageDialog 创建一个消息框
- 【Cocos2D-X 游戏引擎】初窥门径(14)CCTableView
- 获取本地机的网关之重大错误
- JAVA生成WORD文件的方案
- 基于libsvm的中文文本分类原型