2022年最新OpenCV函数实例及教程(一)

简介: 2022年最新OpenCV函数实例及教程

1、图片加载、显示和保存


import cv2
cv2.imread(filename, flags)     #读取加载图片
cv2.imshow(winname, mat)        #显示图片
cv2.waitKey()                   #等待图片的关闭
cv2.imwrite(filename, img)      #保存图片

2、图像显示窗口创建与销毁


cv2.namedWindow(winname, 属性)    #创建一个窗口
cv2.destroyWindow(winname)        #销毁某个窗口
cv2.destroyAllWindows()           #销毁所有窗口

3、图片的常用属性的获取


img.shape  #打印图片的高、宽和通道数
img.size   #打印图片的像素数目
img.dtype  #打印图片的格式

4、选取感兴趣的矩形区域(ROI)


一张图片它的某个像素点可以用 img[x, y, c]表示(x,y为坐标,c为通道数)
这个图片的某个矩形区域可以表示为img[x1:x2, y1:y2, c](矩形左上角坐标为(x1, y1),右下角坐标为(x2, y2))
其中 c取值0,1,2分别对相应B,G,R颜色通道,img[x, y]默认代表所有通道

5、图片颜色通道的分离与合并


cv2.split(img)   #将图片img分离为三个颜色通道
cv2.merge(img)   #将三个颜色通道合并为一张图片

6、图片两种加法


cv2.add(src1, src2):普通相加
cv2.addWeighted(src1, alpha, src2, beta,gamma,dst):带权相加
       src1:第一张图片
       alpha:第一张图片权重
       src2:第二张图片
       beta:第二张图片权重
       gamma:图1与图2带权相加和后添加的数值(总和大于255为纯白)
       dst:输出图片

7、加&减&乘&除


def add_demo(m1, m2):  
    dst = cv2.add(m1, m2) #加
    cv2.imshow("add", dst)  
def subtract_demo(m1, m2):
    dst = cv2.subtract(m1, m2) #减
    cv2.imshow("subtract", dst)
def multiply_demo(m1, m2):
    dst = cv2.multiply(m1, m2) #乘
    cv2.imshow("multiply", dst)
def divide_demo(m1, m2):
    dst = cv2.divide(m1, m2) #除
    cv2.imshow("divide", dst)

8、均值&方差


def demo(img):
    M1 = cv2.mean(img)# 均值
    print(M1)
    M1, dev1 = cv2.meanStdDev(img) # 均值和方差
    print(M1)
    print(dev1)

9、与、或、非、异或


def logic_demo(m1, m2):
    dst = cv2.bitwise_and(m1, m2) #与
    cv2.imshow("bitwise_and", dst)
    dst = cv2.bitwise_or(m1, m2) #或
    cv2.imshow("bitwise_or", dst)
    dst = cv2.bitwise_not(m1, m2) #非(颜色翻转)
    cv2.imshow("bitwise_not", dst)
    dst = cv2.bitwise_xor(m1, m2) #异或
    cv2.imshow("bitwise_xor", dst)

10、计算执行时间


cv2.getTickCount() :用于返回从操作系统启动到当前所经的计时周期数;

cv2.getTickFrequency():用于返回CPU的频率,也就是一秒内重复的次数。

时间(s) = 总次数 / 一秒内重复的次数
时间(ms) = 1000 *总次数 / 一秒内重复的次数
t1 = cv2.getTickCount()
function()   # 待测试的函数
t2 = cv2.getTickCount()
time = (t2 - t1) / cv2.getTickFrequency()
print("time : %s ms" % (time * 1000))

11、彩色空间转换


cv2.cvtColor(src,code,dst=None,dstCn=None)

参数:code,转换类型

image.png

# 色彩空间转换
def color_space_demo(img):
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#BGR转换到GRAY
    cv2.imshow("gray", gray)
    hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)#BGR转换到HSV
    cv2.imshow("hsv", hsv)
    yuv = cv2.cvtColor(img, cv2.COLOR_BGR2YUV)#BGR转换到YUV
    cv2.imshow("yuv", yuv)
    ycrcb = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb)#BGR转换到CrCb
    cv2.imshow("ycrcb", ycrcb)

12、常见滤波器


12.1 均值滤波


cv2.blur(src,ksize,dst=None,anchor=None,borderType=None)

作用:对图像进行算术平均值模糊

参数:ksize,卷积核的大小。dst,若填入dst,则将图像写入到dst矩阵

516bbc30d2094782b0def3c80a569447.png

pic_center

12.2 中值滤波


cv2.medianBlur(src,ksize,dst=None)

作用:对图像进行中值模糊

516bbc30d2094782b0def3c80a569447.png

12.3 高斯滤波


cv2.GaussianBlur(src, ksize, sigmaX, dst=None, sigmaY=None, borderType=None)

作用:对图像进行高斯模糊

参数:sigmaX,X方向上的方差,一般设为0

image.png

12.4 双边滤波


cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace, dst=None, borderType=None))

作用:对图像进行双边模糊

参数:

int d: 表示在过滤过程中每个像素邻域的直径范围。如果这个值是非正数,则函数会从第五个参数sigmaSpace计算该值。

double sigmaColor: 颜色空间过滤器的sigma值,这个参数的值越大,表明该像素邻域内有越宽广的颜色会被混合到一起,产生较大的半相等颜色区域。

double sigmaSpace: 坐标空间中滤波器的sigma值,如果该值较大,则意味着越远的像素将相互影响,从而使更大的区域中足够相似的颜色获取相同的颜色。当d>0时,d指定了邻域大小且与sigmaSpace无关,否则d正比于sigmaSpace.

image.png12.5 方块滤波


cv2.boxFilter(原始图像, 目标图像深度, 核大小, normalize)

image.png

img = cv.imread('1.jpg',1)
blur = cv.blur(img,(5,5)) #均值滤波
median = cv.medianBlur(img,5) #中值模糊
Gauss = cv.GaussianBlur(img,(5,5),0) #高斯模糊
bilater = cv.bilateralFilter(img,9,75,75) #双边模糊


相关文章
|
6月前
|
监控 API 计算机视觉
OpenCV这么简单为啥不学——1.3、图像缩放resize函数
OpenCV这么简单为啥不学——1.3、图像缩放resize函数
76 0
|
28天前
|
算法 计算机视觉
Opencv学习笔记(六):cv2.resize函数的介绍
这篇文章介绍了OpenCV库中cv2.resize函数的使用方法,包括其参数、插值方式选择以及实际代码示例。
178 1
Opencv学习笔记(六):cv2.resize函数的介绍
|
28天前
|
计算机视觉
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
这篇文章详细介绍了OpenCV库中的图像二值化函数`cv2.threshold`,包括二值化的概念、常见的阈值类型、函数的参数说明以及通过代码实例展示了如何应用该函数进行图像二值化处理,并展示了运行结果。
258 0
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
|
26天前
|
机器学习/深度学习 计算机视觉
目标检测笔记(六):如何结合特定区域进行目标检测(基于OpenCV的人脸检测实例)
本文介绍了如何使用OpenCV进行特定区域的目标检测,包括人脸检测实例,展示了两种实现方法和相应的代码。
52 1
目标检测笔记(六):如何结合特定区域进行目标检测(基于OpenCV的人脸检测实例)
|
3月前
|
计算机视觉
OpenCV滑动条(createTrackbar()函数)如何在多个维度进行同步调整?
这篇文章介绍了如何在OpenCV中使用`createTrackbar()`函数创建多个滑动条以同步调整图像的多个维度(如亮度和对比度),通过将不同滑动条的回调函数合并为一个,确保它们在同一图像基础上进行调整。
|
4月前
|
机器学习/深度学习 XML 计算机视觉
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
|
5月前
|
Windows 计算机视觉 Linux
QtCreator 跨平台开发添加动态库教程(以OpenCV库举例)- Windows篇
该文档介绍了Qt的跨平台特性,并推荐在Windows和Linux开发中使用QtCreator。在Windows下添加动态库,可以通过Visual Studio配置.lib文件和.dll文件,或在QtCreator中使用"添加库"功能。在QtCreator中,选择库文件、包含路径,并配置Details,然后更新.pro文件,清除、qmake及构建项目。运行时确保.dll与.exe在同一目录下。
155 0
QtCreator 跨平台开发添加动态库教程(以OpenCV库举例)- Windows篇
|
6月前
|
Linux 开发工具 计算机视觉
QtCreator 跨平台开发添加动态库教程(以OpenCV库举例)- Windows篇
Qt是跨平台的开发工具,推荐使用QtCreator进行Windows和Linux开发。在Windows下,使用Visual Studio创建动态库时,需要配置.lib文件并确保运行时.dll与.exe在同一目录。在QtCreator中添加DLL动态库,可以通过右键项目,选择添加库,然后在Details界面配置库文件、包含路径和平台,最后更新PRO文件并进行清除、qmake和构建步骤。运行时同样需确保.dll文件与可执行文件在同一目录。
174 5
|
6月前
|
监控 算法 Serverless
OpenCV这么简单为啥不学——1.12、使用ssim函数对两张照片进行相似度分析
OpenCV这么简单为啥不学——1.12、使用ssim函数对两张照片进行相似度分析
138 0
|
6月前
|
监控 API 计算机视觉
OpenCV这么简单为啥不学——1.6、图像旋转与翻转(rotate函数、imutils环境安装、imutils任意角度旋转)
OpenCV这么简单为啥不学——1.6、图像旋转与翻转(rotate函数、imutils环境安装、imutils任意角度旋转)
75 0