复制RenderTexture到图像
Copy RenderTexture to Image
我试图复制sf::RenderTexture
(与sf::Image
&sf::Text
对它),以Opencv垫对象。我们可以通过
sf::Image
转换为cv::Mat
(Opencv)sf::Image img;
cv::Size size(img.getSize().x, img.getSize().y);
cv::Mat mat(size,CV_8UC4, (void*)img.getPixelsPtr(), cv::Mat::AUTO_STEP);
cv::cvtColor(mat, mat, cv::COLOR_RGBA2BGRA);
据我所知,在SFML中,我们不能直接将文本添加到sf::Image
,但我们必须使用RenderWindow或RenderTexture。我想唯一的解决方法是按照以下顺序加载对象
科幻:形象——比;科幻:纹理——比;科幻:精灵——在科幻小说:RenderTexture
科幻:文本——比;科幻:RenderTexture
最后将RenderTexture复制到sf::Image,然后转换为cv::Mat
我想这将需要很长时间复制sf::RenderTexture回到sf::Image.
还有其他解决方法吗?就像使用sf::Image::loadFromMemory();
p。S:这里有一些参考资料。
不,当涉及到SFML时,确实没有其他选择。从VRAM复制到RAM不是很快,但应该仍然能够以一个不错的帧率执行。也许你应该试一试,看看性能是否真的影响你的场景。
这里的问题是SFML在GPU空间中操作,所以文本渲染是为渲染你的GPU与精灵类似的事情,但你实际上似乎想要的是CPU渲染文本和精灵。
如果你只翻译精灵(没有缩放/旋转),那么在sf::Image
之上构建这样的功能应该相对容易。
对于文本渲染,您可能希望直接使用freetype,而不是将字体数据移动到GPU。
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 平均图像时图像损坏
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- Vulkan验证层不断在VkQueuePresentKHR()上抛出图像布局错误
- 使用FFMPEG将RGB图像序列保存到.mp4时出现问题
- 将RGB图像保存为PPM格式
- 将图像添加到资源文件夹UWP C++
- 彩色图像的卤化物处理平均值
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 重新定位图像时如何前进到下一个内存块
- 如何使用按钮更新GTK3图像以使用C++从相机捕获图片
- 为什么 BMP 图像上的 imwrite 会卡住/不返回?
- Gstreamer:每 5 秒使用多文件墨水保存图像/jpeg
- 如何使用CImg打开图像?
- 如何使用 OpenCV 解码在两个 UWP 应用之间发送的图像字节?
- 复制RenderTexture到图像