запись D3D12 texture в cuda и отображение через opencv
От: sergey2b ЮАР  
Дата: 08.01.24 21:24
Оценка:
кто нибудь знает как сделать запись D3D12 texture в cuda и отображение через opencv

как импортировать изображение находящиеся в cuda в cv::cuda::GpuMat я знаю
но вот как получить поинтер на D3D12 texture находящиеся в cuda разобраться не получаеться
Re: запись D3D12 texture в cuda и отображение через opencv
От: sergey2b ЮАР  
Дата: 09.01.24 17:14
Оценка:
Здравствуйте, sergey2b, Вы писали:

возможно кому то пригодиться, отображение памяти cuda в GpuMat

#include "opencv2/core.hpp"
#include <opencv2/core/utility.hpp>
#include "opencv2/highgui.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/cudaimgproc.hpp"

#include "cuda_runtime.h"
#include "device_launch_parameters.h"

#include <stdio.h>
#include <stdlib.h>

using namespace std;
using namespace cv;
using namespace cv::cuda;

//#define hsize 256
//#define vsize 256

#define hsize 1024
#define vsize 1024


#define IMAGE_TYPE unsigned char

int main()
{
    uint8_t* imgPtr;
    cv::Mat left, downloadedLeft;
    cv::cuda::GpuMat gpuLeft;

    left = imread("c:/videos/leftview.jpg", cv::IMREAD_GRAYSCALE);
    gpuLeft.upload(left);

    cudaMalloc((void**)&imgPtr, gpuLeft.rows * gpuLeft.step);
    cudaMemcpyAsync(imgPtr, gpuLeft.ptr<uint8_t>(), gpuLeft.rows * gpuLeft.step, cudaMemcpyDeviceToDevice);

    // following code is just for testing and visualization...
    cv::cuda::GpuMat gpuImg(left.rows, left.cols, left.type(), imgPtr, gpuLeft.step);
    gpuImg.download(downloadedLeft);
    imshow("test", downloadedLeft);
    waitKey(0);

    return 0;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.