2017-08-11 11 views
1

バッファイメージをmat.at(i、j)でopencvマットに変換しようとしていますが、20 msを実行します。速度が遅いですか?バッファイメージをcv :: Matに変換する別の方法?ハロゲン化物画像をopencvマットにすばやく変換しますか?

Halide::Func gray; 

    Halide::Var x, y; 

    gray(x, y) = Halide::cast<uint8_t>(0.299f * image(x, y, 0) +0.587f * image(x, y, 1) + 0.114f * image(x, y, 2)); 

    Halide::Var xi,yi; 
    gray.tile(x,y,xi,yi,4,4).vectorize(xi,4).parallel(y); 

    Halide::Buffer<uint8_t> output = gray.realize(image.width(), image.height()); 

    Mat h2m = Mat::zeros(image.height(),image.width(), CV_8UC1); 

    for(int i=0;i<image.height();i++){ 
      for(int j=0;j<image.width();j++){ 
        h2m.at<uchar>(i,j)=output(j,i); 
      } 
    } 
    imshow("gray",h2m); 

答えて

2

だけcv::Matデータへのポインタをラップ:

Halide::Buffer<uint8_t> buf(img.data, width, height); 

そして、その中にあなたの機能を実現する:あなたは非常に多くの

gray.realize(buf); 
+0

感謝を! – tso2386710

関連する問題