我想将Mat
类型的灰度图像保存到矢量列表中。灰度图像包含110
、123
、150
等值。当我使用代码将数据传输到矢量列表中时,在传输数据后,我打印矢量列表中的项目,它们是-155552323
或75694920
等值。我以前漂亮的110
、123
、150
去哪儿了??
cv::Mat grayscaleFrame;
cv::Mat image;
image = cv::imread(fullPath);
cvtColor(image, grayscaleFrame, CV_BGR2GRAY);
equalizeHist(grayscaleFrame, grayscaleFrame);
cout << grayscaleFrame << endl;
vector<int> **vectorList = new vector<int>*[grayscaleFrame.rows];
for(size_t i=0; i<grayscaleFrame.rows;i++)
{
int *p = grayscaleFrame.ptr<int>(i); // pointer to row 0
std::vector<int> row(p, p+grayscaleFrame.cols);
vectorList[i]=&row;
for(int a =0; a<vectorList[i]->size();a++)
{
cout << vectorList[i]->at(a) << endl;
}
}
如果我的错误是使用&row
,那么我如何在不寻址地址的情况下实现这一点,因为当我删除&
时,我会得到错误:"没有合适的转换函数……"
问题在于int类型的向量元素,它们必须是无符号字符。
但当你打印它时,使用cout<lt;(int)您的值<lt;endl;