视频上的Sobel边缘检测器-在输出文件中未检测到



我正在使用OpenCV在视频中应用sobel边缘检测器。我可以在窗口中看到结果,然后我正在写视频。尽管我可以在窗口上看到正确的结果,但输出文件中的结果并不相同。

这是代码以及我可以在窗口和输出文件中看到的内容。知道是什么原因造成的吗?

if between (cap,0,25000):  #Apply results on specific milliseconds of the video
Sobel operator - I still need to add colors
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
frame = cv2.cvtColor(frame, cv2.COLOR_GRAY2BGR)              
frame = cv2.Sobel(frame,cv2.CV_64F,1,0,5)  
out.write(frame)
frame = cv2.resize(frame, None, fx = 0.2, fy = 0.2, interpolation = cv2.INTER_CUBIC)   
cv2.imshow('frame',frame)


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

cap.release()
out.release()
cv2.destroyAllWindows()
print ("done") 

问题已得到回答。我在这里再次添加答案:

Sobel输出是根据您的cv2.CV_64F浮动的。这是不可见的,因为它在0到1的范围内,但您编写的视频帧希望它是0到255。因此,您需要通过乘以255来缩放结果,然后剪裁到0到255的范围,并保存为uint8。frame=(255*cv2.Sobel(frame,cv2.CV_64F,1,0,5((.clip(0255(.astype(np.uint8(。请确保将numpy导入为np-

相关内容

  • 没有找到相关文章

最新更新