【问题标题】:Remove background pollution from video using OpenCV使用 OpenCV 从视频中去除背景污染
【发布时间】:2022-06-17 11:35:45
【问题描述】:

我正在尝试从 opencv 中的视频文件中删除污染。给定帧中的污染是低于某个阈值的灰度。以下是视频文件中 Frame 的示例。

cap = cv2.VideoCapture(file_name)

object_detector = cv2.createBackgroundSubtractorMOG2()

while True:
    ret, frame=cap.read()
    mask = object_detector.apply(frame)
    _, mask  = cv2.threshold(mask,254,255,cv2.THRESH_BINARY)       
    contours,_ = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    for cnt in contours:
        area = cv2.contourArea(cnt)
        if area>100:    #detect for the flashes above 1000pixel
            cv2.drawContours(frame, [cnt], -1, (0,255,0),2)
            #x, y, w, h= cv2.boundingRect(cnt)
            #cv2.rectangle(roi,(x,y),(x+w,y+h),(0,255,0))
    key = cv2.waitKey(30)
    if key =='27':
        break
    cv2.imshow("Frame",frame)
    cv2.imshow("Mask",mask)

【问题讨论】:

  • 您的代码到底有什么问题?什么不起作用?是否有任何错误信息?你得到的图像是什么?白点是好是坏?你在检测什么?您需要更详细地解释。
  • 不,我的代码没有任何问题。我在问是否有任何方法可以从我的视频文件中去除污染。代码仅用于说明图像的生成方式。
  • 定义污染!白点是特征还是噪声?
  • 是的,我想去除某个像素以下的闪光。这些点就是噪音。
  • 将您的帧转换为灰度。然后frame[frame<=threshold]=0,其中 threshold 是您移除闪光灯的阈值。或frame[frame<=threshold]=background,其中背景是您想要的背景颜色的整体灰度。但是,如果这些亮点很糟糕,那么为什么不删除任何高于某个阈值而不是低于某个阈值的亮点呢?

标签: python opencv video-processing cv2


猜你喜欢
  • 1970-01-01
  • 2021-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多