深入学习Python+Opencv常用四种图像处理操作

目录
  • 改变色彩空间: cv.cvtColor()
  • 改变图像大小:cv.resize()
  • 二维卷积操作
  • 常用模糊

opencv图像处理(深度学习中常用的)

改变色彩空间: cv.cvtColor()

cv.cvtColor(img, flag)

  • img:原图像
  • flag:要改变的类型

常用的flag有:cv.COLOR_BGR2GRAY (BGR->GRAY)、cv.COLOR_BGR2HSV

img = cv.imread(r'E:\0_postgraduate\test.jpg')
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
cv.imshow('img', img)
cv.imshow('img_gray', gray)
k = cv.waitKey(0)
if k & 0xFF == ord('q'):
    cv.destroyAllWindows()

我们可以看看flag都有哪些:

flags = [i for i in dir(cv) if i.startswith('COLOR_')]
print( flags )

改变图像大小:cv.resize()

cv.resize(img, (width, height))

  • img:原始图像
  • width:缩放后图像的宽度
  • height:缩放后图像的高度
img = cv.imread(r'E:\0_postgraduate\test.jpg')
img_resize = cv.resize(img, (500, 600))
cv.imshow('img shape: {} x {}'.format(img.shape[1], img.shape[0]), img)
cv.imshow('img_resize shape: {} x {}'.format(img_resize.shape[1], img_resize.shape[0]), img_resize)
k = cv.waitKey(0)
if k & 0xFF == ord('q'):
    cv.destroyAllWindows()

比如某些网络要求输入的图像必须是固定大小的:256 x 256这么大的,这时就可以用cv.resize()对大小不一的图像进行缩放。

二维卷积操作

cv.filter2D()+轨迹条动态控制图像参数:cv.createTrackbar()、cv.getTrackbarPos()

卷积操作是什么这里就不再介绍了。

cv.filter2D(img, -1, kernel)

  • img:原始图像
  • -1:这个参数应该是输出图像,没什么用,填-1就行
  • kernel:卷积核,一个二维数组

而至于cv.createTrackbar()、cv.getTrackbarPos(),这两个函数可以很方便的动态调节图像的参数,很直观地看到调节的效果:

cv.createTrackbar()

第一个参数是轨迹栏名称

第二个参数是它所属的窗口名称,

第三个参数是默认值,

第四个参数是最大值,

第五个参数是执行的回调函数每次轨迹栏值都会发生变化,即每次滑动轨迹条时都会调用该参数。

cv.getTrackbarPos()

第一个参数是滑动条名字,

第二个时所在窗口,

返回值是滑动条的数值

# cv.createTrackbar() 和 cv.getTrackbarPos()测试

def nothing(*arg):
    pass

img = cv.imread(r'E:\0_postgraduate\test.jpg')
img_original = img
cv.namedWindow('image_test')
cv.createTrackbar('kernel_width', 'image_test', 1, 30, nothing)
cv.createTrackbar('kernel_height', 'image_test', 1, 30, nothing)
while 1:
    w = cv.getTrackbarPos('kernel_width', 'image_test')
    h = cv.getTrackbarPos('kernel_height', 'image_test')
    print('w: {} h: {}'.format(w, h))
    if(w!=0 and h!=0):
        kernel = np.ones((w, h), np.float32)/(w*h)
        img = cv.filter2D(img_original, -1, kernel)
        cv.imshow('image_test', img)
    else:
        cv.imshow('image_test', img_original)
    k = cv.waitKey(5)
    if k & 0xFF == ord('q'):
        break
cv.destroyAllWindows()

常用模糊

常用的模糊有平均化模糊:cv.blur()和高斯模糊:cv.GaussianBlur()

(1) cv.blur()

平均化模糊cv.blur()就是让原始图像与一个全1的卷积核做卷积,然后将得到的值除以卷积核中像素的总个数,这么说太绕了,直接上图:

比如我选的卷积核为3x3大小,则原始图像要与如下的卷积核做卷积:

cv.blur(img, (weight, height))

  • img:原始图像
  • weight:卷积核的宽
  • height:卷积核的长

(2) cv.GaussianBlur()

高斯模糊是在平均化模糊基础上的改进,考虑了距离对于中心像素的影响:与中心像素距离越近的像素拥有越高的权重,其实超级简单。高斯模糊的原理可以参考:python实现高斯模糊及原理详解

cv.GaussianBlur(img, (weight, height), sigmaX, sigmaY)

  • img:原始图像
  • weight:卷积核的宽
  • height:卷积核的长
  • sigmaX:二维高斯函数x的偏差
  • sigmaY:二维高斯函数y的偏差

注意:

核的宽度和高度,应该是正数和奇数。我们还应该指定X和Y方向的标准偏差,分别为sigmaX和sigmaY。如果只指定sigmaX,sigmaY将被视为与sigmaX相同。如果两者都是零,则根据核大小计算。高斯模糊对去除图像中的高斯噪声非常有效。

img = cv.imread(r'E:\0_postgraduate\test.jpg')
img_blur = cv.blur(img, (5,5))
img_gaussian = cv.GaussianBlur(img, (5,5), 0)
cv.imshow('image_blur', img_blur)
cv.imshow('image_gaussian', img_gaussian)
k = cv.waitKey(0)
if k & 0xFF == ord('q'):
    cv.destroyAllWindows()

到此这篇关于深入学习Python+Opencv常用四种图像处理操作的文章就介绍到这了,更多相关Python Opencv 图像处理内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python Opencv图像处理基本操作代码详解

    1.图像读取 使用cv2.imread(filepath,flags)读入图像 filepath: 读入图像完整路径(绝对路径,相对路径) flags: 读入图像标志 cv2.IMREAD_COLOR:默认参数,读入一副彩色图,忽略alpha通道:可以通过1指定 cv2.IMREAD_GRAYSCALE:读入灰度图片 也通过0指定 cv2.IMREAD_UNCHANGED:读入完整图片,包括alpha通道 import cv2 img1 = cv2.imread('C:/star.png',1)

  • opencv-python基本图像处理详解

    目录 一.使用matplotlib显示图 1.显示热量图 2.显示灰度图 二.使用cv.imread显示图像 1.显示灰度图像 总结 一.使用matplotlib显示图 import matplotlib.pyplot as plt #plt用于显示图片 import matplotlib.image as mping #mping用于读取图片 import numpy as np lena=mping.imread('1.jpg') #读取和代码同一目录下的图片 #此时lena就已经是一个np

  • Python+OpenCV六种实时图像处理详细讲解

    目录 1.导入库文件 2.设计GUI 3.调用摄像头 4.实时图像处理 4.1.阈值二值化 4.2.边缘检测 4.3.轮廓检测 4.4.高斯滤波 4.5.色彩转换 4.6.调节对比度 5.退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数.滤波处理.阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参.测试有一定帮助. 1.导入库文件 这里主要使用PySimpleGUI.cv2和numpy库文件,PySimpleGUI库文件实现

  • Python+OpenCV图像处理—— 色彩空间转换

    一.色彩空间的转换 代码如下: #色彩空间转换 import cv2 as cv def color_space_demo(img): gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY) #RGB转换为GRAY 这里的GRAY是单通道的 cv.imshow("gray", gray) hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV) #RGB转换为HSV cv.imshow("hsv", hsv) y

  • python opencv图像处理基本操作示例详解

    目录 1.图像基本操作 ①读取图像 ②显示图像 ③视频读取 ④图像截取 ⑤颜色通道提取及还原 ⑥边界填充 ⑦数值计算 ⑧图像融合 2.阈值与平滑处理 ①设定阈值并对图像处理 ②图像平滑-均值滤波 ③图像平滑-方框滤波 ④图像平滑-高斯滤波 ⑤图像平滑-中值滤波 3.图像的形态学处理 ①腐蚀操作 ②膨胀操作 ③开运算和闭运算 4.图像梯度处理 ①梯度运算 ②礼帽与黑帽 ③图像的梯度处理 5.边缘检测 ①Canny边缘检测 1.图像基本操作 ①读取图像 ②显示图像 该函数中,name是显示窗口的名字

  • 深入学习Python+Opencv常用四种图像处理操作

    目录 改变色彩空间: cv.cvtColor() 改变图像大小:cv.resize() 二维卷积操作 常用模糊 opencv图像处理(深度学习中常用的) 改变色彩空间: cv.cvtColor() cv.cvtColor(img, flag) img:原图像 flag:要改变的类型 常用的flag有:cv.COLOR_BGR2GRAY (BGR->GRAY).cv.COLOR_BGR2HSV img = cv.imread(r'E:\0_postgraduate\test.jpg') gray

  • Python+OpenCV实现基本的图像处理操作

    目录 模块的安装 图片的各种操作 读取图像 展示图像 图片保存 图片的各种属性 图像的基本操作 今天小编来和大家分享一下Python在图像处理当中的具体应用,那既然是图像处理,那必然要提到opencv模块了,该模块支持与计算机视觉和机器学习相关的众多算法,并且应用领域正在日益扩展,大致有以下几种领域 物体识别:通过视觉以及内部存储来进行物体的判断 图像分割 人脸识别 汽车安全驾驶 人机交互 等等 当然这次小编并不打算将这么高深的内容,今天就从最基本的opencv模块在图像的基本操作上说起 模块的

  • Python模块常用四种安装方式

    安装Python模块时大多还要依赖一些其他模块,可以利用自动化安装工具,会自动帮你解决依赖关系,自动帮你下载并安装所缺少的那些模块.这样我们可以有更多时间去用各种模块,而不是花很多时间在安装上. easy_insall的作用和perl中的cpan,ruby中的gem类似,都提供了在线一键安装模块的傻瓜方便方式,而pip是easy_install的改进版,提供更好的提示信息,删除package等功能.老版本的python中只有easy_install,没有pip. 现在pip是python官网上推

  • Python中的四种交换数值的方法解析

    这篇文章主要介绍了Python中的四种交换数值的方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 交换两个变量的值方法,这个面试题如果只写一种当然很简单,没什么可以说的. 今天这个面试是问大家有几种办法来实现交换两个变量的值. 在没开始看具体答案前,你可以先想想看 下面分别来说说这几种方法 方法一 通过新添加中间变量temp的方式,这个方法是最简单的,每个语言都适用. 方法二 Python独有的方法,一行代码就能搞定,直接将两个变量放到元

  • python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)

    最近学了下 python opencv,分享下使用 opencv 在图片上绘制常用图形的方法. 案例中实现了在图片中添加线段.圆形.矩形.椭圆形以及添加文字的方法,使用 opencv2 实现的. 实现方法 1)画线段 cv.line 在图片中绘制一段直线 # 绘制线段 # 参数1:图片 # 参数2:起点 # 参数3:终点 # 参数4:BGR颜色 # 参数5:宽度 cv2.line(img, (60, 40), (90, 90), (255, 255, 255), 2); 参数说明 参数 值 说明

  • Python OpenCV实现3种滤镜效果实例

    目录 前言 浮雕滤镜效果 雕刻滤镜效果 凸透镜滤镜效果 总结 前言 本篇文章要使用OpenCV.Numpy 和Math这3个工具包实现一个简单的滤镜编辑器.在这个滤镜编辑器中,包含了3种滤镜效果,它们分别是浮雕滤镜.雕刻滤镜和凸透镜滤镜.本篇文章将对目标图像(如图1所示)进行处理,使得目标图像分别呈现浮雕滤镜(如图2所示).雕刻滤镜(如图3所示)和凸透镜滤镜(如图4所示)的视觉效果. 浮雕滤镜效果 为了实现浮雕滤镜效果,首先要把实现浮雕滤镜效果的原理搞清楚.弄明白.实现浮雕滤镜效果的原理如下所示

  • 详解Python中的四种队列

    队列是一种只允许在一端进行插入操作,而在另一端进行删除操作的线性表. 在Python文档中搜索队列(queue)会发现,Python标准库中包含了四种队列,分别是queue.Queue / asyncio.Queue / multiprocessing.Queue / collections.deque. collections.deque deque是双端队列(double-ended queue)的缩写,由于两端都能编辑,deque既可以用来实现栈(stack)也可以用来实现队列(queue

  • python 发送邮件的四种方法汇总

    这里针对smtplib做了一系列封装,可以完成以下四种场景: 发送纯文本的邮件 发送html页面的邮件 发送带附件文件的邮件 发送能展示图片的邮件 以上四种场景,已经做好了二次封装,经测试OK,使用时直接传入对应参数即可,直接上代码 import smtplib from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.mime.application import MIMEApp

  • Python OpenCV 针对图像细节的不同操作技巧

    本系列专栏写作将采用首创的问答式写作形式,快速让你学习到 OpenCV 的初级.中级.高级知识. 6. 在 Python OpenCV 针对图像细节的不同操作 本篇博客的目标将为你解释一幅图像的拆解,包括图像像素的说明,图像属性信息的获取与修改, 图像目标区域 ROI 相关内容,以及图像通道的知识(包括拆分通道和合并通道) 这些内容在知识结构上与 numpy 库十分紧密,如果从学习的角度出发,建议你储备一下 numpy 相关知识. 读取修改图像的像素值 在之前的博客中,我们已经学到了如何读取一幅

  • 详解Python+OpenCV进行基础的图像操作

    目录 介绍 形态变换 腐蚀 膨胀 创建边框 强度变换 对数变换 线性变换 去噪彩色图像 使用直方图分析图像 介绍 众所周知,OpenCV是一个用于计算机视觉和图像操作的免费开源库. OpenCV 是用 C++ 编写的,并且有数千种优化的算法和函数用于各种图像操作.很多现实生活中的操作都可以使用 OpenCV 来解决.例如视频和图像分析.实时计算机视觉.对象检测.镜头分析等. 许多公司.研究人员和开发人员为 OpenCV 的创建做出了贡献.使用OpenCV 很简单,而且 OpenCV 配备了许多工

随机推荐