V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
enzoyang
V2EX  ›  问与答

怎样判断横屏视频是中间包含完整竖屏,两边模糊的视频?

  •  
  •   enzoyang · 2021-04-23 19:33:17 +08:00 · 859 次点击
    这是一个创建于 1314 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,希望用程序把已有的视频做个标记,方便展示

    5 条回复    2021-05-08 16:25:06 +08:00
    3dwelcome
        1
    3dwelcome  
       2021-04-23 20:12:53 +08:00 via Android
    把两边屏幕的部分裁剪下来,用 fft 2d 进行运算,画面是不是模糊处理过,频域空间一看便知。
    zhaohui318
        2
    zhaohui318  
       2021-04-24 06:50:46 +08:00 via Android
    像你说的这类视频的特征就是中间清晰,两边模糊,那么根据这个特征去判断就行了。

    目前有很多模糊图片检测算法
    https://zhuanlan.zhihu.com/p/97024018
    enzoyang
        3
    enzoyang  
    OP
       2021-04-24 16:37:52 +08:00
    谢谢大家的提示,我试验了一下,边缘检测加判断图中竖直的边缘应该够用了

    ```
    def detect_horizontal_edges(cv_img) -> list:
    """找出图片中的竖线边界"""

    if isinstance(cv_img, str):
    cv_img = cv2.imread(cv_img)

    # 转成灰度
    gray_img = cv2.cvtColor(cv_img, cv2.COLOR_BGR2GRAY)
    # 边缘检测
    canny = cv2.Canny(gray_img, 20, 100)
    # 加粗边缘
    kernal = cv2.getStructuringElement(cv2.MORPH_RECT, (2, 2))
    dilated = cv2.dilate(canny, kernal)

    # 判断竖线
    h, w = dilated.shape[0], dilated.shape[1]
    threshold = int(h * 0.75)
    edge_positions = []
    for x in range(w):
    white_dots = 0
    for y in range(h):
    if dilated[y, x] == 255:
    white_dots += 1
    if white_dots > threshold:
    edge_positions.append(x)

    return edge_positions
    ```
    enzoyang
        4
    enzoyang  
    OP
       2021-04-25 10:04:34 +08:00
    应该是 detect_vertical_edges,代码里弄混了
    julyclyde
        5
    julyclyde  
       2021-05-08 16:25:06 +08:00
    腾讯在这方面好像有个专利
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5889 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 01:50 · PVG 09:50 · LAX 17:50 · JFK 20:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.