新手学习opencv四:Mat和IplImage简单处理图像耗时
来源:互联网 发布:如何破解收银软件 编辑:程序博客网 时间:2024/05/29 15:08
新手学习opencv四:Mat和IplImage简单处理图像耗时
处理目的:对一张读入的图像,进行灰度值反转,即255减去原始灰度值。
循环200次,取平均耗时。
#include "cv.h"#include "highgui.h"#include <iostream>using namespace cv;using namespace std;int main(){string imageName ="1001.jpg";Mat src = imread(imageName,1);Mat res = Mat::zeros(src.rows,src.cols,src.type());long int count = 0;float num = 0;double t1 = (double)getTickCount();for(int n=0;n<200;n++){for (int i = 0; i < src.rows; i++){uchar* data= res.ptr<uchar>(i); // 每一行图像的指针uchar* idata= src.ptr<uchar>(i); // 每一行图像的指针for (int j = 0; j < src.cols*src.channels(); j++){*data++=255-(*idata++); }}}t1= ((double)getTickCount() - t1)/getTickFrequency()/200;imshow("src",src);imshow("result1",res);///////////////////////////////int nl= src.rows; int nc= src.cols * src.channels(); if (src.isContinuous()&&res.isContinuous()) {nc= nc*nl; nl= 1; }double t2 = (double)getTickCount();for(int n=0;n<200;n++){for (int i=0; i<nl; i++){uchar* data= res.ptr<uchar>(i); uchar* idata= src.ptr<uchar>(i);for (int j=0; j<nc; j++){*data++=255-(*idata++); } }}t2= ((double)getTickCount() - t2)/getTickFrequency()/200; imshow("src2",src);imshow("result2",res);//////////////IplImage类遍历//////////////IplImage * img = cvLoadImage("1001.jpg");IplImage *res2=cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,img->nChannels);char *data = img->imageData;int step = img->widthStep;int chanel = img->nChannels;char *outdata = res2->imageData;double t3= (double)getTickCount();for(int n=0;n<200;n++){for(int i=0;i<img->height;i++){for(int j=0;j<img->width;j++){outdata[i*step + j*chanel] = 255-data[i*step + j*chanel];outdata[i*step + j*chanel+1] = 255-data[i*step + j*chanel + 1];outdata[i*step + j*chanel+2] = 255-data[i*step + j*chanel + 2];}}}t3= ((double)getTickCount() - t3)/getTickFrequency()/200; cvNamedWindow("yaunshi");cvShowImage("yaunshi",img);cvNamedWindow("result3");cvShowImage("result3",res2);cout <<"Mat类简单处理耗时1:" << t1 << endl;cout <<"Mat类简单处理耗时2:" << t2 << endl;cout <<"IplImage类简单处理耗时:"<<t3<< endl;cvWaitKey(0);cvReleaseImage(&img);cvReleaseImage(&res2);cvDestroyWindow("yaunshi");cvDestroyWindow("result3");return 0;}
0 0
- 新手学习opencv四:Mat和IplImage简单处理图像耗时
- javaCV图像处理之Frame、Mat和IplImage三者相互转换(使用openCV进行Mat和IplImage转换)
- OpenCV 2 学习笔记(4): 加载,显示和保存图像,Mat类与IplImage类
- 【学习OpenCV】Mat、CvMat、IplImage
- OpenCV中的三种图像数据结构CvMat, IplImage和Mat(二)IplImage
- Delphi显示Opencv的Mat/IplImage图像
- openCV--图像处理类IplImage
- opencv数据容器Mat,cvMat和IplImage
- OpenCV - cv::Mat 和 IplImage 的转换
- opencv数据容器Mat,cvMat和IplImage
- OpenCV - cv::Mat 和 IplImage 的转换
- openCv笔记--IPLImage和Mat的resize
- Opencv中Mat和IplImage的转化
- opencv里的Mat和IplImage
- 【OpenCV】cv::Mat 和 IplImage转换
- OpenCV中Mat和IplImage转换
- OpenCV Mat和IplImage的转换
- OpenCV中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage
- 图像翻转
- Struts,Spring,Hibernate的作用
- 多TASK的应用
- PhpStorm 10.0.3 破解
- jquery1.9判断浏览器类型
- 新手学习opencv四:Mat和IplImage简单处理图像耗时
- CV技术公司列表
- linux基本命令认识,shell打渠道包
- 裘宗燕:C/C++ 语言中的表达式求值
- 程序员面试金典 2.5 链式A+B
- Listiew的Item点击无反应(在item中有Button等抢焦点的控件存在时)
- localtime、localtime_s、localtime_r的使用
- js模仿java格式化字符串处理
- hibernate工作原理