1 Star 0 Fork 0

zxiaosi/Frame-Difference

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
gradient_map.py 3.25 KB
一键复制 编辑 原始数据 按行查看 历史
zxiaosi 提交于 2022-07-27 15:03 . 学习帧差算法
#!/usr/bin/env python3
# _*_ coding: utf-8 _*_
# @Author : zxiaosi
# @Time : 2022/7/27 11:12
# @desc : 三种梯度图处理方法
# 参考:https://blog.csdn.net/Ms_X_Zi/article/details/96424896
import cv2
import numpy as np
def grad_map_sobel(img_flow: np.ndarray) -> np.ndarray:
"""
图片梯度处理(边缘检测) -- Sobel滤波器
:param img_flow: 图片流
:return: 图片流
"""
"""
cv2.Sobel 滤波器
:param src: 图片流
:param ddepth: 输出图片深度, -1:输出原图片深度
:param dx: 横向滤波器类型
:param dy: 纵向滤波器类型
:param ksize: 滤波器大小, 3, 5, 7
:param scale: 放缩比例
:param delta: 偏差
:param borderType: 边界处理方式
:return: 图片流
"""
grad_x = cv2.Sobel(img_flow, cv2.CV_64F, 1, 0)
grad_y = cv2.Sobel(img_flow, cv2.CV_64F, 0, 1)
"""
cv2.convertScaleAbs 放缩
:param src: 图片流
:param alpha: 放缩比例
:param beta: 偏差
:return: 图片流
"""
grad_abs_x = cv2.convertScaleAbs(grad_x)
grad_abs_y = cv2.convertScaleAbs(grad_y)
"""
cv2.addWeighted 混合
:param src1: 图片流1
:param alpha: 放缩比例1
:param src2: 图片流2
:param beta: 放缩比例2
:param gamma: 偏差
:return: 图片流
"""
grad_xy = cv2.addWeighted(grad_abs_x, 0.5, grad_abs_y, 0.5, 0)
return grad_xy
def grad_map_scharr(img_flow: np.ndarray) -> np.ndarray:
"""
图片梯度处理(边缘检测) -- Scharr滤波器
:param img_flow: 图片流
:return: 图片流
"""
"""
cv2.Scharr 滤波器
:param src: 图片流
:param ddepth: 输出图片深度, -1:输出原图片深度
:param dx: 横向滤波器类型
:param dy: 纵向滤波器类型
:param scale: 放缩比例
:param delta: 偏差
:param borderType: 边界处理方式
:return: 图片流
"""
grad_x = cv2.Scharr(img_flow, cv2.CV_64F, 1, 0)
grad_y = cv2.Scharr(img_flow, cv2.CV_64F, 0, 1)
"""
cv2.convertScaleAbs 放缩
:param src: 图片流
:param alpha: 放缩比例
:param beta: 偏差
:return: 图片流
"""
grad_abs_x = cv2.convertScaleAbs(grad_x)
grad_abs_y = cv2.convertScaleAbs(grad_y)
"""
cv2.addWeighted 混合
:param src1: 图片流1
:param alpha: 放缩比例1
:param src2: 图片流2
:param beta: 放缩比例2
:param gamma: 偏差
:return: 图片流
"""
grad_xy = cv2.addWeighted(grad_abs_x, 0.5, grad_abs_y, 0.5, 0)
return grad_xy
def grad_map_laplacian(img_flow: np.ndarray) -> np.ndarray:
"""
图片梯度处理(边缘检测) -- Laplacian滤波器
:param img_flow: 图片流
:return: 图片流
"""
"""
cv2.Laplacian 滤波器
:param src: 图片流
:param ddepth: 输出图片深度, -1:输出原图片深度
:param ksize: 滤波器大小, 3, 5, 7
:param scale: 放缩比例
:param delta: 偏差
:param borderType: 边界处理方式
:return: 图片流
"""
lap = cv2.Laplacian(img_flow, cv2.CV_32F)
"""
cv2.convertScaleAbs 放缩
:param src: 图片流
:param alpha: 放缩比例
:param beta: 偏差
:return: 图片流
"""
grad_xy = cv2.convertScaleAbs(lap)
return grad_xy
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/zxiaosi/frame-difference.git
git@gitee.com:zxiaosi/frame-difference.git
zxiaosi
frame-difference
Frame-Difference
master

搜索帮助