在我的程序中,有一个函数从相机取图像并应将所有数据打包成OpenCV Mat
结构。从相机获得宽度、高度和指向图像缓冲区的unsigned char*
。我的问题是,如果我有全局Mat变量,如何从这些数据创建Mat。我使用了CV_8UC1作为Mat结构的类型。
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);
}
当我测试我的程序时,我得到了image
的正确宽度
和高度
,但我的全局Matimage_
的宽度
和高度
却是0
。 我如何正确地将数据放入我的全局Mat
变量中?
谢谢。
cv::Mat
是 OpenCV C++ 接口的 Mat 类型。cvMat
是 C 接口的类型。cvCreateMat()
在 C 接口中创建一个cvMat
。请不要在此线程上继续讨论,如果您有问题,请在新线程中提问。再见! - karlphillip