如何在c++中将SFML图像转换为OpenCV格式
how to convert SFML image to OpenCV mat in C++?
下面的代码用于将OpenCV Mat图像转换为SFML图像。如何将SFML图像转换回Mat图像?
cv::Mat frameBGR, frameBGRA;
sf::Image image;
cv::cvtColor(frameBGR, frameRGBA, cv::COLOR_BGR2RGBA);
image.create(frameRGBA.cols, frameRGBA.rows, frameRGBA.ptr());
如果纹理或精灵不能转换为OpenCV Mat,那么是否可以将sf::Image转换为OpenGL并将其转换回cv::Mat
sf::Texture texture;
sf::Event event;
sf::Sprite sprite;
texture.loadFromImage(image);
sprite.setTexture(texture);
更新:我引用了这篇文章,但仍然无法转换。
void* buffer = ℑ
cv::Mat image_mat = cv::Mat(cvSize(500, 500),CV_8UC4, buffer, cv::Mat::AUTO_STEP);
cvtColor(image_mat, converted,CV_RGBA2BGR);
它在代码行以下崩溃(当我显示图像时)
imshow("img", converted);
这段代码为我工作:
cv::Mat sfml2opencv(const sf::Image& img){
//get size from image
cv::Size size(img.getSize().x, img.getSize().y);
//create a mat on image memory
cv::Mat mat(size,CV_8UC4, (void*)img.getPixelsPtr(), cv::Mat::AUTO_STEP);
//make SFML RGBA to OpenCV BGRA
cv::cvtColor(mat, mat, cv::COLOR_RGBA2BGRA);
//clone mat to avoid memory editing on image memory
return mat.clone();
}
您的代码崩溃是因为您试图在sf::Image对象的内存中创建cv::Mat,而不是在像素的内存中。
相关文章:
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- 如何将 c++ get 函数代码转换为 opencv 算法中使用的 python
- 将 OpenCV 2 中的ANN_MLP代码转换为 OpenCV 3 代码
- OpenCV - 如何将灰度转换为彩色(CV_8UC3)?
- 将 OpenCV-Matrix 转换为矢量
- 将 opencv 从 2.4.13 转换为 3.3.1 时由 cv::resize() 引起的运行错误
- 从 16UC3 到 8UC3 的高性能 OpenCV 矩阵转换
- HALCON到OpenCV失真系数的转换
- 将节点数组(可变长度)转换为常量浮点**以调用opencv.calcHist
- 如何将垫子转换为 int?(c++,gpu,OpenCV)
- 如何将OpenCV图像数据从Python转换为C++?
- 更快地将卤化物图像转换为 opencv 垫?
- 如何在OpenCV中将4维矩阵转换为NHWC格式
- 错误 C2679:二进制'=':未找到采用类型 'IplImage *' 的右侧操作数的运算符(或没有可接受的转换) OpenCV
- 如何转换OpenCV垫卤化物图像和回来
- 转换OpenCV灰度垫Caffe blob
- 通过强制转换OpenCV UMat的句柄实例化OpenCL cl_mem
- 图像格式转换opencv
- 相机校准和坐标转换(OpenCV)
- Android OpenCV -转换OpenCV c++代码到Android,以检测QR码对齐方块