少帅下飞机(边缘检测)python版

前段时间少帅下飞机挺火的,各种版本都有,甚至还有二进制,CAD版本,闲得无聊我也弄了个python版本的,原理就是边缘检测,这里用的canny算子,大家也可以尝试其他算子,至于参数可以自己适当的调整。 

需要用到opencv库

pip install opencv-python

然后把这一行代码里的视频改成自己视频的名称(路径自己设置)

cap = cv2.VideoCapture('video.mp4')

完整代码如下

import cv2

# 打开视频文件
cap = cv2.VideoCapture('video.mp4')
if not cap.isOpened():
    print("Error: Could not open video.")
    exit()

# 获取视频的帧率和帧大小
fps = cap.get(cv2.CAP_PROP_FPS)
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

# 创建VideoWriter对象
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output_line_art_video.avi', fourcc, fps, (frame_width, frame_height))
if not out.isOpened():
    print("Error: Could not open video writer.")
    cap.release()
    exit()

try:
    while cap.isOpened():
        ret, frame = cap.read()
        if not ret:
            break

        # 转换为灰度图
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        # 减少噪声
        blurred = cv2.GaussianBlur(gray, (5, 5), 0)
        # 使用Canny边缘检测器
        edges = cv2.Canny(blurred, 50, 150)

        # 确保图像尺寸匹配
        if edges.shape[1] != frame_width or edges.shape[0] != frame_height:
            resized_edges = cv2.resize(edges, (frame_width, frame_height))
            out.write(resized_edges)
        else:
            out.write(edges)

        # 显示处理后的帧
        cv2.imshow('Line Art', edges)
        if cv2.waitKey(10) & 0xFF == ord('q'):
            break
finally:
    # 释放资源并关闭窗口
    cap.release()
    out.release()
    cv2.destroyAllWindows()

如果觉得视频播放得过快或者过慢可以更改这一句括号里面的数字进行调整,默认是int类型(整数)

if cv2.waitKey(10) & 0xFF == ord('q'):

效果如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宋政基

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值