OpenCV函数总结

Posted 是一个小迷糊吧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)图像读取函数

img = cv.imread(filedname
                [,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)图像窗口函数

None = cv.nameWindow(winname
                     [,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)图像显示函数

None = cv.imshow(winnaame,
                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形式的矩阵。

以上是关于OpenCV函数总结的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV阶段总结扩充。

opencv标定板像素尺寸

Python使用OpenCV设置图片尺寸!!

OpenCV 完整例程16. 不同尺寸的图像加法

在 OpenCV 中更改 blobFromImage 尺寸顺序

OpenCV-DFT最优尺寸cv::getOptimalDFTSize