• OpenCV convertTo的用法


    convertTo的用法

    src.convertTo(dst, type, scale, shift)

    img参数为图像数据来源,其类型为Mat。
    注意也不是所有格式的Mat型数据都能被使用保存为图片,目前OpenCV主要只支持单通道和3通道的图像,并且此时要求其深度为8bit和16bit无符号(即CV_16U),所以其他一些数据类型是不支持的,比如说float型等。(注:这个还有待考证。)
    如果Mat类型数据的深度和通道数不满足上面的要求,则需要使用convertTo()函数和cvtColor()函数来进行转换。
    convertTo()函数负责转换数据类型不同的Mat,即可以将类似float型的Mat转换到imwrite()函数能够接受的类型。
    而cvtColor()函数是负责转换不同通道的Mat,因为该函数的第4个参数就可以设置目的Mat数据的通道数(只是我们一般没有用到它,一般情况下这个函数是用来进行色彩空间转换的)。
    另外也可以不用imwrite()函数来存图片数据,可以直接用通用的XML IO接口函数将数据存在XML或者YXML中。

    缩放并转换到另外一种数据类型:

    1 dst:目的矩阵;
    2 type:需要的输出矩阵类型,或者更明确的,是输出矩阵的深度,如果是负值(常用-1)则输出矩阵和输入矩阵类型相同;
    3 scale:比例因子;
    4 shift:将输入数组元素按比例缩放后添加的值;

    dst(i)=src(i)xscale+(shift,shift,...)

    如果scale=1,shift=0,则不进行比例缩放。
    如果输入数组与输出数组的类型相同,则函数可以被用于缩放和平移矩阵或图像;

    例:cv::Mat src, src_f; image.convertTo(src_f, CV_32F, 1.0/255, 0); 图像大小没有变化,但是类型又UINT8变为了FLOAT32位,感觉还有待认识,仅供参考,有知道的朋友请解惑,谢谢!

  • 相关阅读:
    关于 广义相对论 引力红移 的 一个 疑问
    随便 说说 非欧几何
    收录 几篇 关于 电磁波 麦克斯韦方程 的 文章
    从 广义相对论 看到 “数学陷阱”
    对 广义相对论 的 评价
    收录 几篇 关于 广义相对论 水星进动 的 文章
    关于 1 和 0.999999……
    我对 量子力学 提出了一个 修正,名为 “K氏修正”
    随便记录点 在 贴吧 里 讨论 广义相对论 的 想法
    C#程序员初学Python
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/13809108.html
Copyright © 2020-2023  润新知