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 边缘输出已损坏的主要内容,如果未能解决你的问题,请参考以下文章