行われたいくつかの調査によると、ヒートマップの数値は OpenCV 経由では実行できません。他にもいくつかのカラー マップ (HSV、jet など) がありますが、私が探しているものはありません。それらを表示するために何か提案はありますか?
質問する
5929 次
2 に答える
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
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;
}
于 2013-04-22T11:44:33.913 に答える
4
確認してください。cv::applyColorMap(InputArray src, OutputArray dst, int colormap)
少なくともOpenCV 2.4以降で利用できます。
このウェブサイトの最小限の例を次に示します。
using namespace cv;
Mat im_gray = imread("pluto.jpg", IMREAD_GRAYSCALE);
Mat im_color;
applyColorMap(im_gray, im_color, COLORMAP_JET);
于 2016-06-21T09:24:49.140 に答える