通过 OpenCV 的热图数据

-3 c++ opencv visual-studio-2010

根据一些研究,热图数字无法通过 OpenCV 完成。还有一些其他的彩色地图(HSV、jet...)但不是我要找的那个。你有什么建议来展示它们吗?

bjo*_*rnz 5

您可以像这样显示热图:

cv::Mat heatmap = getHeatMap(grayscaleImage); // create your heat map from a grayscale image (CV_8UC1)
cv::imshow("Heat Map", heatmap); // display your heat map
waitkey(0); // make sure the application does not close immediately 
Run Code Online (Sandbox Code Playgroud)

getHeatMap() 看起来像这样(未测试):

cv::Mat getHeatMap(cv::Mat input) // input is of type CV_8UC1, return is of type CV_8UC3
{
    cv::Mat result(input.rows, input.cols, CV_8UC3);
    for (int yy = 0; yy < input.rows; ++yy)
    {
        for (int xx = 0; xx < input.cols; ++xx)
        {
            int pixelValue = input.at<uchar>(yy, xx);
            if (pixelValue < 128) {
                result.at<cv::Vec3b>(yy, xx) = cv::Vec3b(0, 0 + 2*pixelValue, 255 - 2 * pixelValue);
            } else {
                result.at<cv::Vec3b>(yy, xx) = cv::Vec3b(0 + 2*pixelValue, 255 - 2 * pixelValue, 0);
            }
        }
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)