CUDA如何从屏幕获取像素?

Posted

技术标签:

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

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

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

【问题讨论】:

【参考方案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 内核可用的资源中。跨度>

以上是关于CUDA如何从屏幕获取像素?的主要内容,如果未能解决你的问题,请参考以下文章

从触摸点获取单个像素

如何获取html元素的宽度并将像素转换为百分比[关闭]

快速高效地获取屏幕(视图)黑色像素

如何从 Linux 帧缓冲区获取 RGB 像素值?

Android中如何获取屏幕的分辨率?

Android中如何获取屏幕的分辨率?