我是第一次使用 openCV。我正在使用 openCV3 和 XCode 对其进行编码。我想创建一个 16 位灰度图像,但我想将我拥有的数据定义为 4000 是白色的像素值,0 是黑色的像素值。我在 int 类型的数组中有这些像素的信息。如何创建 Mat 并将数组中的值分配给 Mat?
问问题
309 次
2 回答
3
short data[] = { 0,0,4000,4000,0,0,4000, ...};
Mat gray16 = Mat(h, w, CV_16S, data);
同样,类型必须匹配。对于 16 位,您需要 CV_16S 和一个short
数组,对于 8 位 CV_8U 和一个 uchar* 数组,对于 float CV_32S 和一个 float* ....
于 2015-04-22T07:14:29.207 回答
0
你可以创建你的垫子
cv::Mat m(rows, cols, CV_16UC1);
但据我所知,无法为“white”定义自定义值,您必须将m与std::numeric_limits::max / 4000相乘。但是,这仅在显示图像时是必需的。
查找表可以做同样的事情(可能更慢),见 cv::LUT。但是,它似乎只支持 8 位图像。
编辑:好的,我错过了关于分配现有数组值的部分;见贝拉克的回答。我希望答案仍然有用。
于 2015-04-22T07:26:20.837 回答