C++ 来自阵列的OpenCv Mat初始化不工作

C++ 来自阵列的OpenCv Mat初始化不工作,c++,opencv,image-processing,C++,Opencv,Image Processing,我正在用这样的数组初始化一个Mat对象 int data[4] = {111,2,3,4}; Mat A = Mat(2, 2, CV_8UC1, data); 现在当我打印(1,1)处的值时,它应该是4 cout<<"\n m1 at 1,1 "<<(int)A.at<uchar>(1,1); cout您的矩阵包含8位元素(这就是CV_8UC1的意思)。您正在向它传递一个整数数组。假设32位整数,第一个整数,111,应该足以填充数组。111的最高有效

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

int data[4] = {111,2,3,4};
Mat A = Mat(2, 2, CV_8UC1, data);  
现在当我打印(1,1)处的值时,它应该是4

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

cout您的矩阵包含8位元素(这就是
CV_8UC1
的意思)。您正在向它传递一个整数数组。假设32位整数,第一个整数,
111
,应该足以填充数组。
111
的最高有效8位将进入位置
1,1
,这些是
0
s。因此得到一个值为
0
的元素

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

unsigned char data[4] = {111,2,3,4};
Mat A = Mat(2, 2, CV_8UC1, data);
或者,如果您需要存储签名的
32
位元素,请使用
CV_32S

尝试

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


您是否尝试将数据创建为
无符号字符数据[4]
?我认为值1,1不应该是4。从一开始应该是8*3位。您的矩阵包含8位元素。谢谢。它正在工作。你能解释一下是什么问题吗?解释得很好。谢谢
int data[4] = {111,2,3,4};
Mat A = Mat(2, 2, CV_32SC1, data);