使用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

相关推荐
CIO_Alliance8 小时前
AI深度系列(2)| CNN卷积池化感受野原理:从局部感知到全局视野
人工智能·深度学习·线性代数·算法·计算机视觉·企业ai转型·企业cio联盟
视频技术分享8 小时前
技术拆解与实战优化:国产化视频会议系统核心原理与落地策略
其他·重构·架构·实时互动·音视频
≮傷£≯√8 小时前
OpenCV ncnn 人脸识别(一)
服务器·人工智能·opencv
动物园猫8 小时前
绝缘子目标检测数据集:2,000张图像 | 目标检测
人工智能·目标检测·计算机视觉
老王的笔记v8 小时前
42期 鼠鼠格式转换工具整合图片文档音视频转换,Windows和Mac免费使用
windows·开源·github·音视频
qq_25294131689 小时前
山体滑坡目标检测数据集 | 山体滑坡检测 地质灾害识别 遥感监测 目标检测 YOLO格式
人工智能·yolo·目标检测·计算机视觉·视觉检测·自然灾害·滑坡数据集
应用市场10 小时前
无线控制与图传协议全景:从 S.BUS 到 WebRTC,一篇讲透遥控、数传与视频链路
音视频·webrtc
明志数科10 小时前
从实验室到工厂产线:具身智能训练数据的环境差异、分布偏移与工业级采集方案
人工智能·深度学习·计算机视觉
黑马水牛10 小时前
Carla仿真系列:10_Carla 双目障碍物测距,视差图还原真实距离
python·计算机视觉·ros·双目·carla仿真
TAN-90°-10 小时前
Deep Learning for Computer Vision——Recurrent Neural Networks
数据结构·人工智能·rnn·深度学习·神经网络·机器学习·计算机视觉