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.我从昨天开始坚持下去.
你的矩阵包含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.