Я хочу построить матрицу openCV. Ниже приведен мой код.Как хранить и читать целую матрицу по 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;
Это выглядит, как она должна работать. Вы получаете какую-либо ошибку? – beaker
Почему вы вообще хотите использовать int? Это может потребовать гораздо больше памяти, чем char, вы можете проверить его с помощью cout << sizeof (char) << "vs" << sizeof (int) << "vs" << sizeof (float) << std :: endl; – Micka
Поскольку число может быть больше 256 – Kuo