Opencv-Python学习笔记(二)

简介:

OpenCV中有数百种在不同色彩空间之间转换的方法。如今,在计算机视觉中有三种常用的色彩空间:灰度、BGR以及HSV(Hue, Saturation,Value)。

  • 灰度色彩空间是通过去除彩色信息来将其转换成灰阶,灰度色彩空间对中间处理特别有效,比如人脸检测。
  • BGR,即蓝-绿-红色彩空间,每一个像素点都由一个三元数组来表示,分别代表蓝、绿、红三种颜色。
  • HSV,H(Hue)是色调, S(Saturation)是饱和度, V(Value)表示黑暗的程度(或光谱另一端的明亮程度)。

傅里叶变换

在OpenCV中,对图像和视频的处理大多数都会涉及到傅里叶变换的概念。具体而言,就是我们所观察到所有的波形都可以由一系列简单且频率不同的正弦曲线叠加得到。也就是说所看到的波形都是由不同的正弦曲线叠加得到的。在图像处理上就可以理解为原始图像由许多频率组成,我们就能够分离这些频率来理解图像和提取感兴趣的数据。
让·巴普蒂斯·约瑟夫·傅里叶

让·巴普蒂斯·约瑟夫·傅里叶(Baron Jean Baptiste Joseph Fourier,1768-1830),男爵,法国数学家、物理学家,1768年3月21日生于欧塞尔,1830年5月16日卒于巴黎。1817年当选为科学院院士,1822年任该院终身秘书,后又任法兰西学院终身秘书和理工科大学校务委员会主席。
主要贡献是在研究《热的传播》和《热的分析理论》时创立了一套数学理论,对19世纪的数学和物理学的发展都产生了深远影响。

269
Baron Jean Baptiste Joseph Fourier,1768-1830

图像的幅度谱(magintude spectrum)。幅度谱图像呈现了原始图像在变化方面的一种表示:把一幅图像中最明亮的像素放到图像中央,然后逐渐变暗,在边缘上的像素最暗。这样可以发现图像中有多少亮的像素和暗的像素,以及它们的百分比。

高通滤波器(HPF, High Pass Filter)

高通滤波器(HPF)是检测图像的某个区域,然后根据像素与周围像素的亮度差值来提升该像素的亮度的滤波器。也就是说,如果一个像素比它周围的像素更突出,就会提升它的亮度。

低通滤波器(Low Pass Filter)

高通滤波器是根据像素与邻近像素的亮度差值来提升该像素的亮度。低通滤波器则是在像素与周围像素的亮度差值小于一个特定值时,平滑该像素的亮度。主要用于去噪和模糊化,如高斯模糊是最常用的模糊滤波器,是一个削弱高频信号强度的低通滤波器。

import numpy as np
import pandas as pd
import cv2
from scipy import ndimage

#滤波器矩阵
kernel_3x3 = np.array([[-1, -1, -1],
                   [-1,  8, -1],
                   [-1, -1, -1]])

kernel_5x5 = np.array([[-1, -1, -1, -1, -1],
                       [-1,  1,  2,  1, -1],
                       [-1,  2,  4,  2, -1],
                       [-1,  1,  2,  1, -1],
                       [-1, -1, -1, -1, -1]])

img = cv2.imread("img800.jpg", 0)

k3 = ndimage.convolve(img, kernel_3x3)
k5 = ndimage.convolve(img, kernel_5x5)

#高斯模糊滤波
blurred = cv2.GaussianBlur(img, (17,17), 0)
g_hpf = img - blurred

# cv2.imshow('blurred', blurred)
# cv2.imshow("g_hpf", g_hpf)

cv2.imshow("img", img)
cv2.imshow("3x3", k3)
cv2.imshow("5x5", k5)
cv2.imshow("g_hpf", g_hpf)
cv2.waitKey()
cv2.destroyAllWindows()
700
hpf-lpf

边缘检测

边缘在人类视觉和计算机视觉中起着重要作用。OpenCV提供了许多边缘检测滤波函数,如Laplacian(), Sobel()以及Scharr()。这些滤滤函数会将非边缘区域转为黑色,将边缘区域转为白色或其他饱和的颜色。但它们又很容易将噪声错误地识别为边缘。解决方案就是在找到边缘之前对图像进行模糊处理。OpenCV提供的模糊滤波函数,如blur(),medianBlur()以及GaussianBlur()。

Canny边缘检测

Canny边缘检测步骤:使用高斯滤波器对图像进行去噪、计算梯度、在边缘上使用非最大抑制(NMS)、在检测到的边缘上使用双(double)阈值去除假阳性,最后分析所有的边缘及其之间的连接,以保留真正的边缘并消除不明显的边缘。

import numpy as np
import pandas as pd
import cv2

img = cv2.imread("img800.jpg", 0)
cv2.imwrite("canny.jpg", cv2.Canny(img, 200, 300))
cv2.imshow("canny", cv2.imread("canny.jpg"))
cv2.waitKey()
cv2.destroyAllWindows()
700
canny


链接:https://www.jianshu.com/p/bfd5dd2566bb

目录
相关文章
|
2月前
|
计算机视觉 索引
OpenCV4学习笔记(2):显示相机视频流的帧率
这篇文章是OpenCV4学习笔记的第二部分,介绍了如何通过OpenCV4在显示相机视频流时计算并显示其帧率,使用`getTickCount`和`getTickFrequency`函数来测量帧时间,并用`putText`在图像上绘制帧率信息。
OpenCV4学习笔记(2):显示相机视频流的帧率
|
2月前
|
计算机视觉 Windows Python
windows下使用python + opencv读取含有中文路径的图片 和 把图片数据保存到含有中文的路径下
在Windows系统中,直接使用`cv2.imread()`和`cv2.imwrite()`处理含中文路径的图像文件时会遇到问题。读取时会返回空数据,保存时则无法正确保存至目标目录。为解决这些问题,可以使用`cv2.imdecode()`结合`np.fromfile()`来读取图像,并使用`cv2.imencode()`结合`tofile()`方法来保存图像至含中文的路径。这种方法有效避免了路径编码问题,确保图像处理流程顺畅进行。
190 1
|
2天前
|
索引 Python
Python学习笔记编程小哥令狐~持续更新、、、(上)
Python学习笔记编程小哥令狐~持续更新、、、(上)
16 2
|
2天前
|
存储 Python
Python学习笔记编程小哥令狐~持续更新、、、 (下)
Python学习笔记编程小哥令狐~持续更新、、、 (下)
11 1
|
4天前
|
Java 编译器 Go
Python学习笔记--- day01计算机基础和环境搭建(一)
Python学习笔记--- day01计算机基础和环境搭建(一)
18 2
|
4天前
|
程序员 编译器 Python
Python学习笔记--- day01计算机基础和环境搭建(二)
Python学习笔记--- day01计算机基础和环境搭建(二)
13 1
|
5天前
|
机器学习/深度学习 算法 计算机视觉
【Python篇】Python + OpenCV 全面实战:解锁图像处理与视觉智能的核心技能
【Python篇】Python + OpenCV 全面实战:解锁图像处理与视觉智能的核心技能
27 2
|
27天前
|
存储 Python 容器
Python编程基础第二天学习笔记
Python编程的第二天学习是建立在基础概念上的深化和扩展,强调了基本语法、数据类型、控制结构和函数的重要性。通过实践这些概念,可以增强对Python编程语言的理解,并为后续的高级学习打下坚实的基础。继续实践并逐渐探索更复杂的编程任务将有助于巩固和扩展这些基础知识。
38 7
|
2月前
|
算法 计算机视觉 Python
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
该文章详细介绍了使用Python和OpenCV进行相机标定以获取畸变参数,并提供了修正图像畸变的全部代码,包括生成棋盘图、拍摄标定图像、标定过程和畸变矫正等步骤。
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)