OpenCV 中的 Emboss 滤波器是一种图像处理技术,它可以将图像中的每个像素替换为其周围像素的加权和。在 OpenCV 中,通常会使用 cv2.filter2D() 函数来实现 Emboss 滤波器。
使用 cv2.filter2D() 函数的基本语法如下:
dst = cv2.filter2D(src, ddepth, kernel)
其中,src 是输入图像,ddepth 是输出图像的深度,kernel 是滤波器的核。
以下是两个示例说明:
示例一:对图像进行 Emboss 滤波器
要对图像进行 Emboss 滤波器,可以使用以下代码:
import cv2
import numpy as np
# 读取图像
img = cv2.imread('image.jpg')
# 定义 Emboss 滤波器的核
kernel = np.array([[-2, -1, 0], [-1, 1, 1], [0, 1, 2]])
# 进行 Emboss 滤波器
dst = cv2.filter2D(img, -1, kernel)
# 显示图像
cv2.imshow('image', dst)
cv2.waitKey()
cv2.destroyAllWindows()
这将读取名为 image.jpg 的图像,然后对图像进行 Emboss 滤波器。最终结果将显示在窗口中。
示例二:对视频进行 Emboss 滤波器
要对视频进行 Emboss 滤波器,可以以下代码:
import cv2
import numpy as np
# 打开视频
cap = cv2.VideoCapture('video.mp4')
# 获取视频帧率
fps = cap.get(cv2.CAP_PROP_FPS)
# 创建视频输出对象
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('.avi', fourcc, fps, (640, 480), True)
# 定义 Emboss 滤波器的核
kernel = np.array([[-2, -1, 0], [-1, 1, 1], [0, 1, 2]])
# 读取视频帧并进行 Emboss 滤波器
while cap.isOpened():
ret, frame = cap.read()
if ret:
dst = cv2.filter2D(frame, -1, kernel)
out.write(dst)
cv2.imshow('frame', dst)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
# 释放资源
cap.release()
out.release()
cv2.destroyAllWindows()
这将打开名为 video.mp4 的视频文件,然后对视频进行 Emboss 滤波器。最终结果将保存在名为 output.avi 的视频文件中。