gpt4 book ai didi

c++ - OpenCV如何存储和读取整数矩阵?

转载 作者:行者123 更新时间:2023-11-28 02:34:20 25 4
gpt4 key购买 nike

我想构建一个 openCV 矩阵。以下是我的代码。

int data[9]={0,1,0,0,-1,0,0,0,0};
cv::Mat m(3, 3, CV_8SC1,data);
cout<<(int)m.at<char>(0,1)<<endl;
cout<<(int)m.at<schar>(0,1)<<endl;

我的显示器上没有显示任何结果。但是,如果我将代码更改为以下内容。

float data[9]={0,1,0,0,-1,0,0,0,0};
cv::Mat m(3, 3, CV_32FC1,data);
cout<<m.at<float>(0,1)<<endl;

将显示“1”。但是,如果我使用类型“float”而不是“int”,我需要花费冗余内存来存储数字“1”、“0”或“-1”。有谁知道如何用 openCV 保存整数?谢谢。


在搜索了更多网站后,我找到了如下解决方案。

cv::Mat C = (cv::Mat_<int>(3,3) << 0, 1, 0, 0, -1, 0, 0, 0, 0);
cout << "C = " << endl << " " << C.at<int>(0,1)<<endl;

最佳答案

您的问题似乎是您的输入数据数组类型。您对数组使用 int(可能是 32 位)类型,但对矩阵使用 char(8 位)类型。

请尝试:

char data[9]={0,1,0,0,-1,0,0,0,0};
cv::Mat m(3, 3, CV_8SC1,data);
cout<<(int)m.at<char>(0,1)<<endl;
cout<<(int)m.at<schar>(0,1)<<endl;

如果你想或必须使用 int 数组,试试

int data[9]={0,1,0,0,-1,0,0,0,0};
cv::Mat m(3, 3, CV_32SC1,data);
cout<<(int)m.at<int>(0,1)<<endl;

关于c++ - OpenCV如何存储和读取整数矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28027087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com