使用Sobel算子把视频转换为只剩边缘部分

效果展示

原始视频

修改后的视频

整体代码

python 复制代码
import cv2

vc = cv2.VideoCapture('test.mp4')

if vc.isOpened():
    open, frame = vc.read()
else:
    open = False

i = 0
while open:
    ret, frame = vc.read()
    if frame is None:
        break
    if ret == True:
        i += 1
        # 转换为灰度图
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        # 使用Sobel进行边缘处理
        sobelx = cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=3)
        sobelx = cv2.convertScaleAbs(sobelx)

        sobely = cv2.Sobel(gray, cv2.CV_64F, 0, 1, ksize=3)
        sobely = cv2.convertScaleAbs(sobely)
        # 合起来
        sobelxy = cv2.addWeighted(sobelx, 0.5, sobely, 0.5, 0)
        cv2.imshow('result', sobelxy)
        # 0.1s 0xFF表示键盘上的Esc键
        if cv2.waitKey(100) & 0xFF == 27:
            break

# 释放硬件资源
vc.release()
# 清除所有窗口
cv2.destroyAllWindows()

代码解释

python 复制代码
sobelx = cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=3)

Sobel(src, ddepth, dx, dy, ksize)

①dx和dy分别表示水平和竖直方向

②ddepth一般为-1,表示和原图像一样的深度

上面的cv2.CV_64F代表的是深度,可以保存负数,是特殊的用法

③ksize表示卷积核大小(算子大小)

④src表示传入图像


python 复制代码
sobelxy = cv2.addWeighted(sobelx, 0.5, sobely, 0.5, 0)

把x和y方向的求和,获得整体的边缘图像

sobelx和sobely则是你通过Sobel计算的图像

0.5表示的是权值(占比)

0表示的是偏置项,为0即可


python 复制代码
        if cv2.waitKey(100) & 0xFF == 27:
            break

这里的0xFF == 27 表示的是键盘上的Esc键


python 复制代码
sobelx = cv2.convertScaleAbs(sobelx)

把负数变成正数,防止被截断为0 因为默认的时候负数会被转换为0

相关推荐
大熊背9 小时前
IspPipeline色相旋转模块实现
人工智能·算法·计算机视觉
霸道流氓气质9 小时前
通义千问 VL & Audio:图像、视频、语音多模态 Java 集成深度解析
java·开发语言·音视频
羞儿10 小时前
【读点论文】From Coarse to Fine-Grained Open-Set Recognition
人工智能·深度学习·计算机视觉·细粒度·开集识别
matlab代码11 小时前
基于直方图优化的图像去雾技术【源码71期】
人工智能·深度学习·计算机视觉
ADAI_Bowen11 小时前
2026 年 8 月建筑设计 AI 工具分析:基于几何保真、可控与编辑能力
人工智能·机器学习·计算机视觉
TechVoyager_824612 小时前
IT9205技术解析:4K60 HDR over IP与视频墙的单芯片实现路径
网络协议·音视频·音视频编解码·it9205·专业视听·视频墙芯片·avoverip
2601_9622935312 小时前
第3.7章 机器人第三方库实战总结(七):OpenCV视觉SLAM核心库详解:API速查+源码实例+避坑指南
图像处理·opencv·计算机视觉·slam·第三方库
论文复现现场13 小时前
工业缺陷检测训练选 YOLO11 还是 RT-DETR?一张 24GB RTX 4090 跑通 PoC 的完整方案
yolo·计算机视觉·rtx4090
hhzz13 小时前
【OpenCV 入门到精通 04】视频入门与绘图交互:从摄像头到鼠标画笔
人工智能·python·opencv·计算机视觉·音视频·交互
棣廷14 小时前
初识OpenCV——人脸检测与识别实战
人工智能·opencv·计算机视觉