• OpenCV函数总结


    0...Numpy相关介绍

    1).ndarray对象及其常用属性

            ndarray是Numpy中可进行快速数学运算,具有广播能力且节约空间的N维数组对象。ndarray支持多维数组,而且提供了更多的操作功能,但是nddary对象中的所有元素必须为相同类型。

            1)ndarray.shape

                     nadrray.shape表示数组的维度,返回一个元组,元组的长度即ndim。此属性可用于获取图像的尺寸,对于可以用n行和m列的数组表示的灰度图像img,img.shape(n,m);对于需要由3个n行和m列的数组表示的BGR图像的img0,img0.shape为(n,m,3)

            2)ndarray.dtype

                    ndarray.dtype表示数组中元素的数据类型。图像在计算机中由像素构成的矩阵表示,每个像素值的大小决定了图像的质量。如果用8位无符号证书存储16位图像,会造成图像的颜色的改变,从而显示错误的图像。。

            3)ndarray.ndim

                    ndarray.ndim表示数组的维度。ndim可用来比哦啊是你图像的通道数。在OpenCV函数中,通常使用C1、C2、C3、C4分别表示单通道、双通道、三通道和四通道。

            4)ndarry.size

                    ndarry.size表示数组元素的总个数,在图像中常用它来计算数组中像素的个数。

            5)代码实例:

    #Numpy_Attributes.py中ndarry对象常用属性的使用实例
    '
    运行

    2).NumPy常用函数

            1)创建ndarray对象

                    np.array()函数是创建数据最简单的方式,可以接受一切序列型的对象,并且可以指定对象中元素的数据类型。若没有指定,则会自动为新创建的数组推断一个合适的数据类型。

            2)ndarray对象的切片和索引

                    img[0,0]可以选择灰度图像img中位于(0,0)位置的像素;img[x1:x2,y1:y2]可以对灰度图像img进行裁剪,其中x1、y1为图像左上角的坐标,x2、y2为图像右下角的坐标;img1[:,:,0]可以选取彩色图像img 中的蓝色通道。

            3)生成随机数

                    np.random模块提供了能够生成多种随机数的函数。np.random.randint()函数可以从给定的范内随机选取整数;np.random.randn()函数可以产生服从均值为0、标准差为1的正态分布的数据。

            4)代码实例

    #Numpy_Operations.py中的NumPy相关函数的操作实例'
    运行

    1...图像的读取与显示

            1)图像读取函数

    1. img = cv.imread(filedname
    2. [,flags])

    参数:filename:需要读取的图像的路径,包含图像的名称和图像的扩展名

               flags:    读取图像的形式和标志,如将彩色图像按照灰度图来读取,默认是按照彩色图像格式读取

    备注:如果图像路径错误、破损或者格式不被支持,则无法正确读取图像,但此时不会报错,而是返回None。函数的第一个参数以字符串形式给出需要读取图像的路径,第二个参数设置读取图像的形式,默认以彩色图的形式读取。通过编码器内部转换可将彩色图像转换为灰度图,这可能会与OpenCV中将彩色图像转换成灰度图函数的转换结果有差异。这些标志在功能不冲突的前提下可以同时声明多个,彼此之间用“|”隔开。

    cv.imread()函数中可选择的标志

    cv.imread()函数中可选择的标志
    标志简记作用
    cv.IMREAD_UNCHANGED-1按照图像原样读取,保留alpha通道(第4个通道)
    cv.IMREAD_GRAYSCALE0将图像转换成单通道灰度图像后读取
    cv.IMREAD_COLOR1将图像转换成三通道BGR彩色图像后读取
    cv.IMREAD_ANYDEPTH2保留原图像的16位、32位深度。若不声明该标志,则转成8位深度后读取
    CV.IMREAD_ANYCOLOR4以任何可能的颜色格式读取图像
    cv.IMREAD_LOAD_GDAL8使用GDAL驱动程序加载图像
    cv.IMREAD_REDUCED_GRAYSCALE_216将图像转换成单通道灰度图像,尺寸缩小至原来的1/2。更改最后一位数字可以缩小至原来的1/4(最后一位改为4)和原来的1/8(最后一位改为8)
    cv.IMREAD_REDUCED_COLOR_217将图像转换成三通道彩色图像后读取,尺寸缩小至原来的1/2。更改最后一位数字可以缩小至原来的1/4(最后一位改为4)和原来的1/8(最后一位改为8)
    cv.IMREAD_IGNORE_ORIENTATION128

    不以EXIF的方向旋转图像

            2)图像窗口函数

    1. None = cv.nameWindow(winname
    2. [,flags])

     参数:winname :窗口名称,用作窗口的标识符

                 flag:      窗口属性设置标志

    备注:该函数会创建一个窗口变量,用于显示图像和滑块,通过窗口名称引用该窗口。如果在创建窗口时已经存在具有相同名称的窗口,则该函数不会有执行任何操作。该函数的第一个参数用于唯一识别窗口,第2 个参数主要用于设置窗口的大小是否可调、显示的图像是否填充窗口等。标志在功能不冲突的前提下可以同时声明多个,不同参数之间用“|”隔开即可. 

    cv.namedWindow()函数中可选择的标志
    标志简记作用
    cv.WINDOW_NORMAL0x00000000显示图像后,允许用户随意调整窗口大小
    cv.WINDOW_AUTOSIZE0x00000001根据图像大小显示窗口,不允许用户调整大小
    cv.WINDOW_OPENGL0x00001000创建窗口的时候会支持OpenGL
    cv.WINDOW_FULLSCREEN1全屏显示窗口
    cv.WINDOW_FREERATIO0x00000100调整图像尺寸以充满窗口
    cv.WINDOW_KEEPRATIO0x00000000保持图像的比例
    cv.WINDOW_GUI_EXPANDED0x00000000创建的窗口允许添加工具栏和状态栏
    cv.WINDOW_GUI_NORMAL0x00000010创建没有状态栏和工具栏窗口的方法

     3)图像显示函数

    1. None = cv.imshow(winnaame,
    2. img)

    参数: winname : 要显示图像的窗口名称,用字符串形式赋值

                img:           要显示的图像

    备注:该函数会在指定的窗口中显示图像,如果在此函数之前没有创建同名的图像窗口,就会使用cv.WINDOW_AUTOSIZE标志创建一个窗口,显示图像的原始大小。如果创建了图像窗口,则会缩放图像以适应窗口属性。该函数会根据图像的深度(数据类型)将其缩放,具体缩放规则如下:

            1@ :如果图像是uint8类型,则按照原样显示

            2@:如果图像是uint16类型或者int32类型,则会将像素值除以256,将范围由[0,255x256]映射到[0,255].

            3@: 如果图像是float32和float64类型,则将像素乘以255,即将范围有[0,1]映射到[0,255]。

    注意:第2个参数类似于cv.imread()中读取的ndarry形式的矩阵。

  • 相关阅读:
    MySql安全加固:无关或匿名帐号&是否更改root用户&避免空口令用户&是否加密数据库密码
    AI重建粒子轨迹,发现新物理学
    如何在居家办公、咖啡厅办公和联合办公空间办公中抉择?
    docker openjdk:8-jdk-alpine 修改时区、添加字体
    仿南讯信息官网首页-整体页面布局和导航布局
    Python 实现自动化测试 dubbo 协议接口
    别低头,皇冠会掉;别流泪,贱人会笑。
    ESD防静电监控系统后台实时掌控现场静电防护情况
    7×24无人值守直播推流软件开发实战,一文为你揭开视频推流的底层原理(附源码)
    Spring Boot集成阿里云视频点播服务的过程记录
  • 原文地址:https://blog.csdn.net/weixin_46178977/article/details/126753016