zoukankan      html  css  js  c++  java
  • openmp在图像处理上面的运用

    // 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_TCHARargv[])
    {
        for (int i=0;i<10;i++)
        {
            Test(i);
        }
        getchar();
        return 0;
    }
    而开启openmp
    代码
    // 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_TCHARargv[])
    {
        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_TCHARargv[])
    {    
        //时间记录
        const int64 start = getTickCount();
        vector<MatvectorMats;
        //文件目录
        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的是这么长时间
    不看算法本身的效率,在解决这个问题的时候,这种方法还是相当好用的。
     
  • 相关阅读:
    Android 屏幕实现水龙头事件
    高速排序算法
    hdu2993坡dp+二进制搜索
    如何设计接口?
    virtio-netdev 发送数据包
    android-sdk-windows下载版
    FusionCharts简明教程(一)---建立FusionCharts图形
    strcpy_s与strcpy对照
    安全博客
    图片相关
  • 原文地址:https://www.cnblogs.com/jsxyhelu/p/5562115.html
Copyright © 2011-2022 走看看