首页 > 其他分享 >openmp在图像处理上面的运用

openmp在图像处理上面的运用

时间:2022-12-24 10:03:23浏览次数:38  
标签:gray return Mat int 图像处理 Test openmp 运用 include

// openmptest的测试程序




//









#include "stdafx.h"









void Test(int n){




for (int i=0;i<10000;i++)




{




int j=0;




j = j+1;




}




printf("%d",n);




}









int _tmain(int argc, _TCHAR* argv[])




{




for (int i=0;i<10;i++)




{




Test(i);




}




getchar();




return 0;




}


openmp在图像处理上面的运用_i++


而开启openmp



openmp在图像处理上面的运用_Test_02


代码


// openmptest的测试程序


//







#include "stdafx.h"







void Test(int n){



for (int i=0;i<10000;i++)



{



int j=0;



j = j+1;



}



printf("%d",n);



}







int _tmain(int argc, _TCHAR* argv[])



{



for (int i=0;i<10;i++)



{



Test(i);



}



getchar();



return 0;



}


速度更快。


在最简单的层次上,openmp提供了粗颗粒的并行算法。一直以来,我都在寻找图像处理的加速算法,但是由于图像处理的特性(大多为线性项目),所以很难有好的提速方法。但是对于批量的图像处理,采用我们这种方法将是非常好用的。


编写较为复杂的opencv 程序




// openmptest的测试程序



//







#include "stdafx.h"



#include <iostream>



#include <opencv2/opencv.hpp>



#include "GoCvHelper.h"



using namespace std;



using namespace cv;



using namespace GO;







Mat Test(Mat src){



Mat draw;



Mat gray;



cvtColor(src,gray,COLOR_BGR2GRAY);



threshold(gray,gray,100,255,THRESH_OTSU);



connection2(gray,draw);



return draw;



}











int _tmain(int argc, _TCHAR* argv[])



{



//时间记录



const int64 start = getTickCount();



vector<Mat> vectorMats;



//文件目录



char cbuf[100] = "F:/图片资源/纹理库brodatz/brodatzjpg";



//获取所有文件



getFiles(cbuf,vectorMats);



//循环处理



// #pragma omp parallel for



for (int i=0;i<vectorMats.size();i++)



{



Mat dst = Test(vectorMats[i]);



}







//时间



double duration = (cv::getTickCount() - start)/getTickFrequency();



printf("共消耗时间%f",duration);



waitKey();



return 0;



}


不用mp的是这么长时间



openmp在图像处理上面的运用_i++_03


不看算法本身的效率,在解决这个问题的时候,这种方法还是相当好用的。


 


标签:gray,return,Mat,int,图像处理,Test,openmp,运用,include
From: https://blog.51cto.com/jsxyhelu2017/5967068

相关文章