2017-10-17 3 views
0

Mat'sポインタを使用してGPUMatエンティティを作成するにはどうすればよいですか?Mat'sのデータポインタを使ってGPUMatエンティティを作成するにはどうしたらいいですか?

私の実装の以下は間違っています。

#include<opencv2/opencv.hpp> 

#include "opencv2/gpu/gpu.hpp" 
//using namespace cv; 
int main() 
{ 
    //Mat img = imread(); 
    cv::Mat mSource = cv::imread("C:\\New Folder\\1.jpg"); 
    cv::gpu::GpuMat gpuInput(mSource.rows, mSource.cols, CV_32FC1, mSource.data, cv::Mat::AUTO_STEP);  

    cv::gpu::GpuMat mGTarget; 
    cv::gpu::resize(gpuInput, mGTarget, cv::Size(0, 0), 0.5, 0.5); 

    cv::Mat mTarget; 
    mGTarget.download(mTarget); 

    cv::imwrite("C:\\New Folder\\5.jpg", mTarget); 
} 
+0

なぜTAPIを使用しないのですか? https://www.learnopencv.com/opencv-transparent-api/ –

答えて

2

GpuMat::uploadGpuMat::download機能を使用してください。 upload関数はパラメータとしてcv::Matを取り、ホストデータをデバイスにアップロードします。

GpuMat gpuInput; 
gpuInput.upload(mSource); 
+0

私はこれを知っています。しかし、私はポインタ "mSource.data"を使用したいと思います。 – md612

+0

@ md612なぜそれをしたいのですか? – zindarod

+0

同じ問題を抱えている類似のアプリケーションが1つあります - https://stackoverflow.com/questions/46658100/how-to-turn-opencv-gpumat-into-cuvicevicer/46663438?noredirect=1#comment80275867_46663438 – md612

関連する問題