python高斯噪声怎么去除_OpenCV 常用总结(Python)

本文介绍了OpenCV在Python中的基本操作,包括图片读写、图像滤波、图像增强、阈值分割、形态学操作等。重点讨论了如何利用OpenCV去除高斯噪声,以及通过HSV颜色空间进行图像处理。提到图像降噪的常见方法如均值滤波、高斯滤波、中值滤波和双边滤波,并提供了相关代码示例。同时,文章提到了阈值分割中的OTSU算法,以及形态学操作如膨胀、腐蚀、开运算和闭运算在图像处理中的应用。
摘要由CSDN通过智能技术生成

最近一直在用cv2,记录一下常用的一些操作和代码吧。

首先放OpenCV 的python官方文档链接:

Welcome to OpenCV-Python Tutorials’s documentation!

OpenCV 教程 - OpenCV 2.3.2 documentation

主要用的模块大概分为以下几类:

  1. 图片读写,2. 图像滤波,3.图像增强,4.阈值分割,5.形态学操作,当然还有其他。。。

绪论:

工作环境Linux Ubuntu 16.04, Python 3.6, OpenCV 4.0。因为OpenCV的数据结构是基于numpy的,所以也要对numpy有大概的了解。

首先导入必要的库:

import 

由于Ubuntu下cv2的imshow展示图片功能会有bug,因此使用matplotlib来展示图片。

一,图片读写:

Basic

图片读入:

image = cv2.imread('test.jpg', -1)

没什么好说的,第一个参数文件路径,第二个参数是通道数,-1代表原图与原图保持一致,0代表转换为灰度图,1代表使用BGR通道读入。

需要注意的就是读入的图片是以np.ndarray类型存储的,且彩色图像的通道为BGR与常见的RGB不同。

图片展示:

cv2.imshow('image', image)
cv2.WaitKey(0)
cv2.destroyAllWindows()

imshow第一个参数是窗口名,string类。第二个是np.ndarray的数组。注意在下面要使用WaitKey,不然展示窗口就会闪一下,程序就继续运行了,参数代表停多长时间,0的话是除非干扰不然一直展示。

在Ubuntu下cv2的imshow会出bug, 使程序崩溃,因此使用pyplot展示图片,但需要注意pyplot的彩色图片是RGB的格式,所以展示图像时需要先转换通道。

对于灰度图像:

plt.imshow(image, cmap='gray')
plt.show()

对于彩色图像:

image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
plt.imshow(image)
plt.show()

图片写出:

cv2.imwrite('image.jpg', image)

这边需要注意的是第一个参数文件名要加格式,比如.jpg .png 之类的。

More

多的话只对文件读入加一些。

读取某个文件夹下所有jpg或其他图片可以使用glob,但无法读取子文件夹下的。

import glob
PATH = ''
for file in glob.glob(PATH + '*.jpg'):
    img = cv2.imread(file, -1)

也可以把jpg改为png等等。

那么如何读取一个文件夹内包括其子文件夹下的所有图片呢?这个时候要用os和fnmatch了。

import os
import fnmatch


def find_files(directory, pattern):
    """
    Method to find target files in one directory, including subdirectory
    :param directory: path
    :param pattern: filter pattern
    :return: target file path
    """
    for root, dirs, files in os.walk(directory):
        for basename in files:
            if fnmatch.fnmatch(basename, pattern):
                filename = os.path.join(root, basename)
                yield filename

for filename in find_files('Home/Leon', '*.jpg'):
    img = cv2.imread(filename, -1)

这个看一下应该就知道怎么回事了把?find_files引用了一个网上的代码我忘了哪个了,,,

然后对读入的图片色彩空间转换,常用cvtColor

img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

第二个参数很多种,常用的色彩空间也就是把BGR转成RGB或者Gray,偶尔会用HSV,因为HSV不会有很多颜色的参数,对于图片的纹理啊这些特征的提取和处理很有用。HSV三个通道分别是:色调(H),饱和度(S),明度(V)。具体释义可以看维基百科的

https://zh.wikipedia.org/wiki/HSL%E5%92%8CHSV%E8%89%B2%E5%BD%A9%E7%A9%BA%E9%97%B4

实话讲对HSV我理解的不多,反正就是H跟颜色有关,是一种对于RGB的非线性变换,饱和度的话就是我们有时候会说有些颜色好艳啊之类的,我会用来提取纹理,V明度我一直就认为是类似灰度值了。印象中有专门的矩阵来乘可以完成两个色彩空间的变换。

二,图像滤波

图像降噪:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值