numpy

简介: numpy
import cv2 as cv
import numpy as np

src = cv.imread("morph02.png")
cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
cv.imshow("input", src)

# 高斯模糊去噪声
gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)

# 顶帽操作
se = cv.getStructuringElement(cv.MORPH_RECT, (3, 3), (-1, -1))
binary = cv.morphologyEx(binary, cv.MORPH_TOPHAT, se)


cv.imshow("binary", binary)
cv.imwrite("binary3.png", binary)

cv.waitKey(0)
cv.destroyAllWindows()

读取图像:

src = cv.imread("morph02.png")
这行代码使用cv.imread()函数读取名为"morph02.png"的图像文件,并将其存储在变量src中。这个图像将作为后续处理的源图像。

创建显示窗口:

cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
cv.imshow("input", src)
这两行代码首先创建一个名为"input"的窗口,并通过cv.WINDOW_AUTOSIZE参数设置窗口大小自适应图像大小。然后使用cv.imshow()函数在"input"窗口中显示原始图像src。

高斯模糊去噪声:

gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
首先,使用cv.cvtColor()函数将原始图像从BGR颜色空间转换为灰度图像,存储在变量gray中。接着,使用cv.threshold()函数对灰度图像进行阈值处理,创建一个二值图像binary。这里使用Otsu的方法自动计算阈值,将图像转换为黑白两色,以便更好地进行后续形态学操作。

顶帽操作:

se = cv.getStructuringElement(cv.MORPH_RECT, (3, 3), (-1, -1))
binary = cv.morphologyEx(binary, cv.MORPH_TOPHAT, se)
顶帽操作是一种形态学操作,用于提取比结构元素小的亮区域。首先,使用cv.getStructuringElement()函数创建一个3x3大小的矩形结构元素se。然后,使用cv.morphologyEx()函数对二值图像binary应用顶帽操作,结果存储回binary变量中。

显示处理后的图像:

cv.imshow("binary", binary)
使用cv.imshow()函数在新窗口"binary"中显示经过顶帽操作处理后的二值图像。

保存处理后的图像:

cv.imwrite("binary3.png", binary)
使用cv.imwrite()函数将处理后的二值图像保存为"binary3.png"文件。

等待按键事件并关闭窗口:

cv.waitKey(0)
cv.destroyAllWindows()
cv.waitKey(0)函数等待用户按下任意键,cv.destroyAllWindows()函数关闭所有OpenCV创建的窗口。这样,程序会保持打开状态,直到用户按下键盘上的任意键,然后所有窗口将关闭,程序结束。

目录
相关文章
|
3月前
|
Python
numpy快速使用
numpy快速使用
40 6
numpy快速使用
|
1月前
|
存储 索引 Python
NumPy 教程 之 NumPy Ndarray 对象 6
**NumPy的ndarray对象是核心特征,是同类型元素的多维数组。它包括数据指针、数据类型(dtype)、形状元组和跨度元组。创建数组使用`numpy.array()`,可通过`dtype`指定数据类型。例如:`a = np.array([1, 2, 3], dtype=complex)`生成复数数组。内存布局遵循C或F顺序。**
15 0
|
3月前
|
Python
numpy
numpy
30 4
|
9天前
|
Python
NumPy 教程 之 Numpy 数组操作 13
本教程介绍 NumPy 中的数组操作,覆盖了修改数组形状、翻转、连接与分割等技巧。重点讲解了如何使用 `numpy.expand_dims` 函数在指定位置新增轴以扩展数组维度,通过示例展示了 `expand_dims` 的用法及其对数组形状的影响。
20 4
|
1月前
|
存储 索引 Python
NumPy 教程 之 NumPy Ndarray 对象 2
**NumPy的ndarray对象是多维数据的核心,它存储同类型元素,具有形状和 strides。形状描述数组维度大小,strides指示元素间字节偏移。通过`numpy.array()`创建,可指定数据类型、复制选项等。例如,`numpy.array(list, dtype, copy=True, order='C', subok=False, ndmin=0)`。**
23 4
|
1月前
|
存储 索引 Python
NumPy 教程 之 NumPy Ndarray 对象 4
**NumPy的ndarray对象是核心特征,是同类型元素的多维数组。它包括数据指针、数据类型(dtype)、形状元组和跨度元组。创建ndarray使用`numpy.array()`,参数如object(输入数据)、dtype(数据类型)等。例如:`a = np.array([[1, 2], [3, 4]])`创建了一个二维数组。**
17 2
|
1月前
|
存储 索引 Python
NumPy 教程 之 NumPy Ndarray 对象 1
**NumPy的ndarray对象是多维数组,存储相同类型数据,以0开始索引。包含数据指针、dtype(描述数据类型)、shape(表示维度大小的元组)和stride(控制元素间步长)。创建ndarray使用`numpy.array()`函数。**
17 3
|
1月前
|
存储 索引 Python
NumPy 教程 之 NumPy Ndarray 对象 3
**NumPy的ndarray对象是多维数组,存储相同类型数据,用0开始的索引访问。包括数据指针、dtype、形状和跨度元组。创建数组用`np.array()`,参数控制数据类型、复制、排列和维度。例如:`a = np.array([1,2,3])`。输出:`[1 2 3]`。**
16 1
|
1月前
|
存储 索引 Python
NumPy 教程 之 NumPy Ndarray 对象 5
**NumPy的ndarray是核心数据结构,是同类型的多维数组。它包含数据指针、数据类型(dtype)、形状和跨度。创建ndarray用`numpy.array()`,参数包括对象、数据类型、复制选项等。例如,`a = np.array([1, 2, 3, 4, 5], ndmin=2)`创建至少二维的数组。**
15 0
|
3月前
|
数据采集 数据挖掘 关系型数据库