我想我已经彻底搜索了论坛,除非我在搜索字符串中遗漏了某些关键字,所以如果我错过了一个帖子,请原谅我。我目前正在使用 OpenCV 2.4.0,我认为这只是一个简单的问题:
我正在尝试接收从另一个 API 获得的无符号字符数组(8 位,3 通道)并将其放入 OpenCV 矩阵中以查看它。然而,所显示的只是尺寸正确但灰色完全一致的图像。这与您指定要显示的不正确的 Mat 名称时看到的颜色相同。
已咨询: 将字节字符串转换为 cv::mat(使用数组内部的字符串)和 opencv 从相机数据创建垫子(我认为是宾果游戏!,但似乎无法正确显示图像) .
我退后一步,只是尝试制作一个示例数组(以消除提供此数组的其他部分):
int main() {
bool isCamera = true;
unsigned char image_data[] = {255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255};
cv::Mat image_as_mat(Size(6,3),CV_8UC3,image_data);
namedWindow("DisplayVector2",CV_WINDOW_AUTOSIZE);
imshow("DisplayVector2",image_as_mat);
cout << image_as_mat << endl;
getchar();
}
所以我只是创建一个 6x3 矩阵,第一行是红色像素,第二行是绿色像素,第三行是蓝色。然而,这仍然会产生相同的空白灰色图像,但尺寸正确。
矩阵的输出是(注意分号,即它的格式正确):
[255, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0; 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0; 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 255]
我可能疯了或错过了一些明显的东西。我是否需要初始化 Mat 中的某些内容以使其正确显示?一如既往地感谢大家的帮助!