OpenCv -从边缘创建蒙版-裁剪并保存图像

j5fpnvbx  于 2023-11-22  发布在  其他
关注(0)|答案(1)|浏览(212)

我有一个不透明的标志视频,我的目标是确定图像区域保持静止并提取它。
这是我的代码:

  1. import cv2
  2. import numpy as np
  3. import imutils
  4. c = cv2.VideoCapture('sky.mp4')
  5. _,f = c.read()
  6. avg2 = np.float32(f)
  7. while(1):
  8. _,f = c.read()
  9. cv2.accumulateWeighted(f,avg2,0.005)
  10. #cv2.accumulateWeighted(f,avg2,0.01)
  11. res2 = cv2.convertScaleAbs(avg2)
  12. # load the query image, compute the ratio of the old height
  13. # to the new height, clone it, and resize it
  14. ratio = res2.shape[0] / 300.0
  15. orig = res2.copy()
  16. res2 = imutils.resize(res2, height = 600)
  17. # convert the image to grayscale, blur it, and find edges
  18. # in the image
  19. gray = cv2.cvtColor(res2, cv2.COLOR_BGR2GRAY)
  20. gray = cv2.bilateralFilter(gray, 11, 17, 17)
  21. edged = cv2.Canny(gray, 30, 200)
  22. cv2.imshow('img',f)
  23. cv2.imshow('avg2',edged)
  24. k = cv2.waitKey(20)
  25. if k == 27:
  26. break
  27. cv2.destroyAllWindows()
  28. c.release()

字符串
cv2.accumulateWeighted函数允许在经过时间后清楚地识别大部分仍保留在帧上的部分。orig帧部分:

边缘平均帧部分:

如何为整个平均边缘部分创建蒙版,裁剪并保存到单独的图像中?

68de4m5k

68de4m5k1#

您可以使用cv2.findContours()进行连通分量分析。然后使用cv2.boundingRect()获取边界框。然后您可以使用Numpy切片使用img[r1:r2, c1:c2]裁剪图像。

相关问题