2016-05-09 109 views
0

我已经定义了一个数组char char [],并且需要将它转换为Opencv Mat。有没有办法?将字符数组转换为Opencv Mat

char buf[Max_size]; 
+0

如果你提供一些细节,会更好。为什么你想要这个?数据是什么?你要使用输出cv :: Mat –

+0

在我的服务器中,我从客户端接收一个字节的图像,并将它们存储在char buf []的数组中。那么我想发送buf []以由仅接受Mat变量的函数SURF处理。在您提供的解决方案中,是否必须将该行放入for循环中? – Electra

+0

不,你不需要把它放在一个循环中 –

回答

1

没有什么,叫: “转换char阵列cv::Mat”。 cv::Mat是表示内存中的图像的容器。它可能拥有这些数据,可能不会。如果你想创建一个cv::Mat来表示一个图像,它的位图数据在一些char数组中,你可以使用下面的代码。有趣的是,你知道图像的行和列。

cv::Mat my_mat(rows,cols,CV_8UC1,&buf[0]); //in case of BGR image use CV_8UC3 

请记住,在这种情况下,cv::Mat并不拥有数据的所有权。您已手动删除您的数据。但是,因为它是一个堆栈数组,所以你不需要任何东西。

+0

对于其他人使用谷歌搜索;如果你的数据是'unsigned char *',你需要在重载解析的构造函数调用中强制转换为'void *'来查找正确的构造函数。 – oarfish