OpenCv Mat初始化数组无法正常工作

t0m*_*aka 2 c++ opencv image-processing

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

int data[4] = {111,2,3,4};
Mat A = Mat(2, 2, CV_8UC1, data);  
Run Code Online (Sandbox Code Playgroud)

现在当我打印(1,1)时的值应为4

cout<<"\n m1 at 1,1 "<<(int)A.at<uchar>(1,1);
Run Code Online (Sandbox Code Playgroud)

它是打印 - 0

我在Windows XP和OpenCv 2.3中使用VS2008.我从昨天开始坚持下去.

jua*_*nza 8

你的矩阵包含8位元素(这CV_8UC1意味着什么).你正在传递一组int.假设32位整数,第一个111,应该足以填充数组.最重要的8位111将进入位置1,1,这些是0s.所以你得到一个有价值的元素0.

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

unsigned char data[4] = {111,2,3,4};
Mat A = Mat(2, 2, CV_8UC1, data);
Run Code Online (Sandbox Code Playgroud)

或者,如果您需要存储已签名的32位元素,请使用CV_32S.