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

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

1.图像基本操作

①读取图像

②显示图像

该函数中,name是显示窗口的名字,可输入任意字符串,img就是读取的图片矩阵。

waitKey()意思是图片停留的时间,若设为0,则会一直保留直到关闭图片。

③视频读取

使用VideoCapture方法读取视频,若可以成功读取,则vc.read()返回的第一个参数就是True,否则为False。返回的第二个参数frame就是读取的视频图片。此时只能读取一张。

该函数可以将读取的图片按照设定的速度依次展示,cv.waitKey中的数值越小,展示的速度越快。

gray处只是把图片设置成了灰度图像,直接用frame展示也可以,就是原图。最后的0xFF==27就是ESC键,按下这个键就会退出。

④图像截取

因为图像读取的是矩阵,因此使用矩阵的截取方法即可。

⑤颜色通道提取及还原

CV读取图像的时候,彩色是BGR而非RBG,使用split以及merge方法进行提取和还原。

通过将其他通道设置为0,即可展示只保留某一颜色通道的图像。

⑥边界填充

指定大小后,有不同的填充方法,通过borderType来进行设置。

⑦数值计算

若通过矩阵计算方式直接相加,则当结果超过255的时候,会进行取余操作。

若通过cv.add方法,则超过255的会全部截断为255

图像尺寸的修改:cv.resize(图像矩阵,尺寸长宽元组)

⑧图像融合

通过cv.addWeighted对图像进行融合,参数分别为:第一张图,权值,第二张图,权值,微调的度。给的权值相当于对图像取了个透明度。两张图会直接重叠在一起。

2.阈值与平滑处理

①设定阈值并对图像处理

通过cv.threshold对图像进行阈值处理,上面的代码中,127就是阈值,255是最大值。后面是处理的方法,比如BINARY是处理为0和1,即显示的图片只有黑和白。加上INV就是反转过来,也就是白和黑。

②图像平滑-均值滤波

blur方法,传入的第一个参数是图像,第二个是核大小。 也就是以多大的范围去处理图像,比如3*3或者5*5等。

③图像平滑-方框滤波

④图像平滑-高斯滤波

⑤图像平滑-中值滤波

对lena图像通过以上的滤波方式进行滤波,发现中值滤波的效果最好,因为中值滤波会直接舍弃掉噪音,而其他的滤波方式都是需要考虑噪音在内,并进行计算的。

3.图像的形态学处理

①腐蚀操作

kernel依旧是核,跟上面的一样,代表处理的范围大小。erode方法中的参数分别为:待处理的图像,核,迭代次数。每一次迭代都会侵蚀掉一部分图像。因此如果有细的毛刺会直接被侵蚀掉,粗的线条会变细。迭代次数越多,侵蚀的部分越大。

②膨胀操作

该操作相当于腐蚀操作的逆操作。会把原来的内容扩展。如果原来的图就带毛刺,膨胀后毛刺会变大。

③开运算和闭运算

开闭运算其实就是膨胀和腐蚀运算的结合,有一个先后顺序,如上图。都是通过morphologyEx方法来实现的,改变其中的参数即可。

4.图像梯度处理

①梯度运算

梯度就是膨胀-腐蚀所得到的边界。依旧是morphologyEx方法来实现。

②礼帽与黑帽

礼帽 = 原始输入-开运算结果

黑帽 = 闭运算-原始输入

其实就是把上面两种运算包装成了函数

③图像的梯度处理

三种算子:Sobel, Scharr, Laplacian

上面代码中Sobel算子和Scharr算子输入的参数为:待处理的图片,图像深度(通常指定为-1就可以),x方向,y方向

因此若只指定x为1,其实是计算了一半。需要把数值修改为绝对值,并计算y=1,x=0的情况下的另一半,两者融合起来,才会是完整的处理。

Scharr算子:把左右数值变大,结果更明显。

Laplacian算子:对变化更敏感,对噪音点也敏感。通常不单独使用拉普拉斯算子。原理是中心点和周围点比较,不需要输入x和y。

5.边缘检测

①Canny边缘检测

流程:

1.使用高斯滤波器,平滑图像,滤除噪声
2.计算图像中每个像素点的梯度强度和方向
3.应用非极大值抑制,以消除边缘检测带来的杂散效应
4.应用双阈值检测来确定真实的和潜在的边缘
5.通过抑制孤立的弱边缘完成最终的边缘检测

以上是两种边缘检测的对比,结果如下

该方法会设置两个阈值,大于高阈值的地方保留,低于低阈值的地方舍弃,在高低之间的地方,若和保留的地方有链接则保留,否则舍弃。

可以看出,阈值设定的高的时候,细节变少。低的时候,细节变多。

以上就是python opencv图像处理基本操作示例详解的详细内容,更多关于python opencv图像处理的资料请关注我们其它相关文章!

(0)

相关推荐

  • opencv python简易文档之图片基本操作指南

    前言 最近在学习opencv,使用的是python接口.于是想着写些相关的笔记供以后参考,有不足之处希望大家指出. 使用python学习opencv需要下载opencv第三方库. 使用pip安装即可. 安装命令: pip install opencv-python pip install opencv-contrib-python(opencv的贡献库) 引入opencv import cv2 读取图片: img=cv2.imread('cat.jpg') # cat.jpg路径为相对路径 #

  • python计算机视觉opencv卡号识别示例详解

    目录 一.模板预处理 1.将模板设置为二值图 2.检测模板的轮廓 3.对模板轮廓排序,并将数字和轮廓一一对应,以字典存储 4.备注 二.图片预处理 1.初始化卷积核 2.图片预处理第一部分 3.图像预处理第二部分 三.轮廓处理 1.大轮廓过滤 2.小轮廓分割 模板图片如下: 需识别的图片如下: 一.模板预处理 1.将模板设置为二值图 2.检测模板的轮廓 3.对模板轮廓排序,并将数字和轮廓一一对应,以字典存储 排序的函数如下: 排序并存储: 4.备注 ①每一个数字对应的是二值图截出来的那个数字图的

  • OpenCV半小时掌握基本操作之图像基础操作

    目录 概述 截取图像 获取颜色通道 读取视频 [OpenCV]⚠️高手勿入! 半小时学会基本操作⚠️ 图像基础操作 概述 OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大. 今天小白就带大家一起携手走进 OpenCV 的世界. 截取图像 例子: # 截取图像 img = cv2.imread("picture.jpg") img = img[200:600, 400:1000] cv2.imshow("cut", img) cv2.waitKey(

  • 详解OpenCV图像的概念和基本操作

    前言: opencv最主要的的功能是用于图像处理,所以图像的概念贯穿了整个opencv,与其相关的核心类就是Mat. 像素: 图片尺寸以像素为单位时,每一厘米等于28像素,如1515厘米长度的图片,等于420420像素的长度.一个像素所能表达的不同颜色数取决于比特每像素(BPP). 灰度图像:8bpp=2的8次方=256色, 高彩色:16bpp=2的16次方=65536色, 真彩色:24bpps=2的24次方=16777216色. 图像分辨率: 图像分辨率是图像总像素的多少,由于图像通常用矩阵表

  • Python opencv操作深入详解

    直接读取图片 def display_img(file="p.jpeg"): img = cv.imread(file) print (img.shape) cv.imshow('image',img) cv.waitKey(0) cv.destroyAllWindows() 读取灰度图片 def display_gray_img(file="p.jpeg"): img = cv.imread(file,cv.IMREAD_GRAYSCALE) print (img

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

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

  • 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)

  • Python OpenCV形态学运算示例详解

    目录 1. 腐蚀 & 膨胀 1.1什么是腐蚀&膨胀 1.2 腐蚀方法 cv2.erode() 1.3 膨胀方法 cv2.dilate() 2. 开运算 & 闭运算 2.1 简述 2.2 开运算 2.3 闭运算 3. morphologyEx()方法 3.1 morphologyEx()方法 介绍 3.2 梯度运算 3.3 顶帽运算 3.4 黑帽运算 1. 腐蚀 & 膨胀 1.1什么是腐蚀&膨胀 腐蚀&膨胀是图像形态学中的两种核心操作 腐蚀可以描述为是让图像沿

  • python OpenCV 实现高斯滤波详解

    目录 一.高斯滤波 二.C++代码 三.python代码 四.结果展示 1.原始图像 2.5x5卷积 3.9x9卷积 一.高斯滤波    高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程. [1] 通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到.高斯滤波的具体操作是:用一个模板(或称卷积.掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值. 二.C++代码

  • 人工智能学习Pytorch教程Tensor基本操作示例详解

    目录 一.tensor的创建 1.使用tensor 2.使用Tensor 3.随机初始化 4.其他数据生成 ①torch.full ②torch.arange ③linspace和logspace ④ones, zeros, eye ⑤torch.randperm 二.tensor的索引与切片 1.索引与切片使用方法 ①index_select ②... ③mask 三.tensor维度的变换 1.维度变换 ①torch.view ②squeeze/unsqueeze ③expand,repea

  • Python OpenCV机器学习之图像识别详解

    目录 背景 一.人脸识别 二.车牌识别 三.DNN图像分类 背景 OpenCV中也提供了一些机器学习的方法,例如DNN:本篇将简单介绍一下机器学习的一些应用,对比传统和前沿的算法,能从其中看出优劣: 一.人脸识别 主要有以下两种实现方法: 1.哈尔(Haar)级联法:专门解决人脸识别而推出的传统算法: 实现步骤: 创建Haar级联器: 导入图片并将其灰度化: 调用函数接口进行人脸识别: 函数原型: detectMultiScale(img,scaleFactor,minNeighbors) sc

  • 对python周期性定时器的示例详解

    一.用thread实现定时器 py_timer.py文件 #!/usr/bin/python #coding:utf-8 import threading import os import sys class _Timer(threading.Thread): def __init__(self, interval, function, args=[], kwargs={}): threading.Thread.__init__(self) self.interval = interval se

  • python assert的用处示例详解

    使用assert断言是学习python一个非常好的习惯,python assert 断言句语格式及用法很简单.在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行最崩溃,不如在出现错误条件时就崩溃,这时候就需要assert断言的帮助.本文主要是讲assert断言的基础知识. python assert断言的作用 python assert断言是声明其布尔值必须为真的判定,如果发生异常就说明表达示为假.可以理解assert断言语句为raise-if-not,用来测试表示式,其返回值为

  • python音频处理的示例详解

    准备工作: 首先,我们需要 import 几个工具包,一个是 python 标准库中的 wave 模块,用于音频处理操作,另外两个是 numpy 和 matplot,提供数据处理函数. 一:读取本地音频数据 处理音频第一步是需要从让计算机"听到"声音,这里我们使用 python 标准库中自带的 wave模块进行音频参数的获取. (1) 导入 wave 模块 (2) 使用 wave 中的函数 open 打开音频文件,wave.open(file,mode)函数带有两个参数, 第一个 fi

  • Python数字图像处理基础直方图详解

    目录 直方图的定义 直方图的性质 直方图的应用 图像增强 图像分割 图像识别 Python直方图的计算 直方图的定义 直方图的性质 只统计某个灰度级出现的次数,图像的大小不一样的话, 某灰度值的像素出现的次数是不一样的. 那如果我们在这基础上除以像素总个数的话,那就是某一灰度级出现的概率,那么这样的话不同大小的同一内容图像其灰度直方图是一样的. 直方图的应用 图像增强 图像分割 图像识别 Python直方图的计算 import cv2 import numpy as np import matp

随机推荐