我正在做我的学校项目。我使用网格眼来访问环境温度。数据形式是64像素阵列(8x8 2D阵列)。现在我想使用这个数组来生成热图片。我可以简单地将值复制到Matlab,缩放它,并使用图像(温度)来输出像这样的图片
红色和黑色越多表示越热。 但是我用C ++构建了所有程序。所以我必须找到一种方法在C ++中做同样的事情。我首先要做的就是OpenCV。经过一番搜索,我只为灰度垫写了一个简单的代码。但这张照片看起来很奇怪。
这是我的代码:
void GridEye::showCV() {
// > threshold means this pixel contain heat object.
for (int i = 0; i < 64; ++i) {
if (temperature[i] > threshold) forimage[i] = 255;
else forimage[i] = 0;
}
Mat image(8, 8, CV_8UC1, forimage);
resize(image, image, Size(640, 640)); // to make picture larger
namedWindow("Display window", WINDOW_AUTOSIZE);
imshow("Display window", image);
waitKey(100);
}
我的代码有问题吗?或者使用其他库的一些建议,因为我对OpenCV并不熟悉。
答案 0 :(得分:1)
尝试类似:
Mat1f image(8, 8, temperature);
//threshold(image, image, your_threshold_value, 0, THRESH_TOZERO); // << Uncomment this line to apply a threshold
normalize(image, image, 0, 1, NORM_MINMAX);
imshow("original size", image);
Mat resized;
//resize(image, resized, Size(640, 640)); // << Apply bilinear interpolation
resize(image, resized, Size(640, 640), 0, 0, INTER_NEAREST);
imshow("resized", resized);
waitKey();