Canny 边缘输出已损坏

Posted

技术标签:

【中文标题】Canny 边缘输出已损坏【英文标题】:Canny edge output is corrupted 【发布时间】:2021-03-16 01:09:45 【问题描述】:

我正在使用 OpenCV 在视频中应用 Canny 边缘检测器。我可以在一个窗口中看到结果,然后我正在编写视频。即使我可以在窗口中看到正确的结果,但输出文件中的结果却不一样。

这是代码以及我可以在窗口和输出文件中看到的内容。知道什么会导致这种情况吗? 我不确定 Canny 的输出是什么,是否必须将其转换为适合视频其余部分的数据类型。

        `

    import cv2
    import numpy as np


    cap = cv2.VideoCapture('New_video.mp4')
    if (cap.isOpened() == False):
     print("Unable to read camera feed")

     frame_width = int(cap.get(3))
     frame_height = int(cap.get(4))
     fps = int(round(cap.get(5)))
     out = cv2.VideoWriter('output.mp4', cv2.VideoWriter_fourcc(*'mp4v'), fps, 
   (frame_width, frame_height))

    while (True):
    ret, frame = cap.read()
    if ret == False:
    break 
         if between (cap,40000,45000):
           gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
           frame = cv2.blur(gray,(5,5))
           frame = cv2.Canny(frame,20,60)   
         if between (cap,45000,50000):
          gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
          frame = cv2.blur(gray,(5,5))
          frame = cv2.Canny(frame,150,250)` 
       out.write(frame)    
       cv2.imshow('frame',frame)

【问题讨论】:

你在哪里写你的输出,你在哪里查看窗口?请显示完整的代码。 我更新了代码以显示 imshow 窗口和输出 【参考方案1】:

尝试使用 XVIDfourcc 编解码器代替 mp4v。此外,VideoWriter 方法还有一个参数 isColor,默认设置为 true。每当我们使用灰度图像时,它都应该设置为 False。

https://docs.opencv.org/3.4/dd/d9e/classcv_1_1VideoWriter.html

【讨论】:

以上是关于Canny 边缘输出已损坏的主要内容,如果未能解决你的问题,请参考以下文章

变量“Yarray”周围的堆栈已损坏

Laravel 5.4 中的 Zipstream - 数据已损坏

dim.xml 和 cub.xml 已损坏

XFS 分区损坏修复方法

apyori apriori 损坏的项目集输出

MKMapView 区域在 iOS7 中方向更改后损坏