【问题标题】:CUDA how to get pixels from screen?CUDA如何从屏幕获取像素?
【发布时间】:2021-01-31 06:01:45
【问题描述】:

下午好。 我找到了这篇文章,但它展示了如何从文件夹中的图像中获取像素。是否可以直接从桌面获取像素?

How to get image pixel value and image height and width in CUDA C?

【问题讨论】:

    标签: c++ cuda nvidia


    【解决方案1】:

    无法使用 CUDA 从屏幕/桌面/应用程序窗口获取像素。您必须使用某种图形 API,例如某些 X 扩展或 DirectX(或 OpenGL,如果您正在处理的窗口受 OpenGL 控制)。

    通过图形 API 获取像素后,您可以使用 CUDA/Graphics interop 将其传递给 CUDA。

    有许多用于屏幕截图的资源。 Here 就是一个例子。还有很多其他的。

    一个可能的建议是使用 NVIDIA capture SDK。然而,这并不是 CUDA 的正式组成部分。将屏幕像素放入 CUDA 可访问的资源中是一种可能的方法。 (而且,该功能在 Windows 上已弃用。)

    【讨论】:

    • 如何将图像直接传输到 CUDA 而不将其保存到系统中。
    • 如果图像在主机内存中,使用cudaMemcpy。研究任何 CUDA 示例代码,例如 vectorAdd。如果图像已经在 GPU 内存中,但在图形方面,请使用 CUDA 图形互操作。研究任何 CUDA 图形互操作示例代码,例如 simpleTexture3D
    • 捕获过程的第一步是将显示的像素放入纹理等资源中。如何做到这一点与 CUDA 无关,如果您对此有任何疑问,请在适当的 SO 标签上询问他们。一旦您要“直接发送到 CUDA 而不将其保存到系统”的图像位于纹理等图形资源中,那么 CUDA 图形互操作示例代码将显示如何将其放入 CUDA 内核可用的资源中。跨度>
    猜你喜欢
    • 2013-06-11
    • 2011-02-09
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多