[英]opencv create mat from camera data
在我的程序中,我有从摄像机获取图像的功能,应该将所有数据打包在OpenCV Mat
结构中。 从相机我得到宽度,高度和unsigned char*
到图像缓冲区。 如果我有全局Mat变量,我的问题是如何从这些数据创建Mat。 Mat结构的类型我采用了CV_8UC1。
Mat image_;
function takePhoto() {
unsigned int width = getWidthOfPhoto();
unsinged int height = getHeightOfPhoto();
unsinged char* dataBuffer = getBufferOfPhoto();
Mat image(Size(width, height), CV_8UC1, dataBuffer, Mat::AUTO_STEP);
printf("width: %u\n", image.size().width);
printf("height: %u\n", image.size().height);
image_.create(Size(image.size().width, image.size().height), CV_8UC1);
image_ = image.clone();
printf("width: %u\n", image_.size().width);
printf("height: %u\n", image_.size().height);
}
当我测试的程序,我得到正确的width
和height
的image
,但width
和height
我的全球垫的image_
是0
。 我如何正确地将数据放入我的全局Mat
变量?
谢谢。
不幸的是, clone()
和copyTo()
成功地将width / height的值复制到另一个Mat。 至少在OpenCV 2.3上! 真的很遗憾。
但是,您可以通过使函数返回Mat
来解决此问题并简化代码。 这样您就不需要拥有全局变量:
Mat takePhoto()
{
unsigned int width = getWidthOfPhoto();
unsigned int height = getHeightOfPhoto();
unsigned char* dataBuffer = getBufferOfPhoto();
Mat image(Size(width, height), CV_8UC1, dataBuffer, Mat::AUTO_STEP);
return Mat;
}
int main()
{
Mat any_img = takePhoto();
printf("width: %u\n", any_img.size().width);
printf("height: %u\n", any_img.size().height);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.