从数组初始化OpenCv Mat不工作

OpenCv Mat initialization from array not working

本文关键字:工作 Mat OpenCv 数组 初始化      更新时间:2023-10-16

我正在用这样的数组初始化Mat对象

int data[4] = {111,2,3,4};
Mat A = Mat(2, 2, CV_8UC1, data);  

现在当我打印at(1,1)的值应该是4

cout<<"n m1 at 1,1 "<<(int)A.at<uchar>(1,1);

打印- 0

我在Windows XP和OpenCv 2.3中使用VS2008。我从昨天起就被它缠住了。

您的矩阵包含8位元素(这就是CV_8UC1的意思)。你传递给它一个整型数组。假设32位整型,第一个,111,应该足以填充数组。111最重要的8位将进入1,1位置,这些是0。所以你得到一个值为0的元素。

尝试传递8位无符号元素:

unsigned char data[4] = {111,2,3,4};
Mat A = Mat(2, 2, CV_8UC1, data);

或者,如果您需要存储有符号的32位元素,请使用CV_32S

Try

unsigned char data[4] = {111,2,3,4};
Mat A = Mat(2, 2, CV_8UC1, data);  

int data[4] = {111,2,3,4};
Mat A = Mat(2, 2, CV_32SC1, data);