0

我是第一次使用 openCV。我正在使用 openCV3 和 XCode 对其进行编码。我想创建一个 16 位灰度图像,但我想将我拥有的数据定义为 4000 是白色的像素值,0 是黑色的像素值。我在 int 类型的数组中有这些像素的信息。如何创建 Mat 并将数组中的值分配给 Mat?

4

2 回答 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”定义自定义值,您必须将mstd::numeric_limits::max / 4000相乘。但是,这仅在显示图像时是必需的。

查找表可以做同样的事情(可能更慢),见 cv::LUT。但是,它似乎只支持 8 位图像。

编辑:好的,我错过了关于分配现有数组值的部分;见贝拉克的回答。我希望答案仍然有用。

于 2015-04-22T07:26:20.837 回答