今天学opencv的时候,讲到归一化,将像素转为浮点数,但却没有将浮点数转为像素,查了资料写了一下
void QuickDemo::norm_demo(Mat& image)
{
Mat dst;
std::cout << image.type() << std::endl;
image.convertTo(image, CV_32F); // 转换为浮点数
std::cout << image.type() << std::endl;
normalize(image, dst, 1.0, 0, NORM_MINMAX);
std::cout << dst.type() << std::endl;
imshow("图像数据归一化", dst);
Mat ds;
double maxVal = 0;
double minVal = 0;
minMaxLoc(dst, &minVal, &maxVal);
dst.convertTo(dst, CV_8UC3, 255.0/(maxVal - minVal), 0); //转回CV8U
std::cout << dst.type() << std::endl;
}
运行结果如下:
输入图像是image,右图,type16,转为浮点数之后type21,归一化以后左图,type21,
转回CV8U以后type16