imshow函数理解

2023-12-18  本文已影响0人  大龙10

  使用opencv对图像进行处理之后,通常调用imshow函数来显示处理结果。但是,我们经常会发现显示结果和我们预期的结果有些差别。这是由于opencv经常会涉及到对多种图像数据类型的处理,如果我们对图像数据类型之间的转换以及imshow函数理解不够透彻,那么显示结果则不会尽如人意。

一、imshow函数详解

对于imshow函数,opencv的官方注释指出:根据图像的深度,imshow函数会自动对其显示灰度值进行缩放,规则如下:

二、案例说明

1、16U格式的图像一片漆黑

//opencv4.1.0
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main() {

    Mat src1, src2,src3;

    src1 = imread("1.png", 0);
    imshow("原图", src1);

    src1.convertTo(src2, CV_16U);
    imshow("格式转换图", src2);

    src2.convertTo(src3, CV_16U, 256);
    imshow("格式转换系数修正图", src3);

    waitKey(0);
    return 0;
}

2、32F格式的图像目标全是白色

//opencv4.1.0
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main() {

    Mat src1, src2,src3;

    src1 = imread("1.png", 0);
    imshow("原图", src1);

    src1.convertTo(src2, CV_32F);
    imshow("格式转换图", src2);

    normalize(src2, src3, 0, 1, NORM_MINMAX);
    imshow("格式转换系数修正图", src3);

    waitKey(0);
    return 0;
}

三、资料

菜鸟笔记:
https://www.coonote.com/note/imshow.html
上一篇下一篇

猜你喜欢

热点阅读