为什么我的网络摄像头视频中存在条纹噪声,如何将其消除?

时间:2018-09-11 12:29:37

标签: python opencv image-processing

我正在尝试使用开放式简历创建瀑布效果,并且正在使用内置的笔记本电脑摄像头。我正在使用背景减法来查找视频的任何差异,但是大多数情况下,相机会产生闪烁的水平条纹噪声。视频看起来不错,但我可以看到有些闪烁。这款相机的FPS速度比LED照明快吗?这是什么声音,应该怎么用?我包括了这种噪音的照片。 Example of such noise

我的代码:

while(True):
    ret, frame = cap.read()

    #frame = cv2.fastNlMeansDenoisingColored(frame,None,10,10,7,21)
    frame = cv2.GaussianBlur(frame,(5,5),0,0)
    difference = np.subtract(background,frame)
    threshold = 200
    fgmask = abs(np.sum(difference,axis=2))>threshold
    mask_sum = np.sum(fgmask)
    if(mask_sum > frame.shape[0]*frame.shape[1]*0.3):
        background = frame

    fgmask = np.array(fgmask,dtype = np.uint8)
    #fgmask = fgbg.apply(frame)

    # Erode
    dilatation_type = cv2.MORPH_ELLIPSE
    dilatation_size = 2
    element = cv2.getStructuringElement(dilatation_type, (2*dilatation_size + 1, 2*dilatation_size+1), (dilatation_size, dilatation_size))
    fgmask1 = cv2.erode(fgmask,element,iterations =2 )
    #fgmask1 = cv2.dilate(fgmask,element,iterations =1 )
    #fgmask1 = fgmask1 ==255
    fgmask1 = np.array(fgmask1,dtype=np.uint8)
    #fgmask1 = cv2.GaussianBlur(fgmask1,(3,3),0,0)

    bgmask = np.logical_not(fgmask1)
    bgmask = np.array(bgmask,dtype=np.uint8)

    display = cv2.bitwise_and(frame,frame,mask = fgmask1) + cv2.bitwise_and(display,display,mask =bgmask) 

    cv2.imshow('orginal',frame)
    cv2.imshow('frame',display)
    cv2.imshow('mask',fgmask1*255)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

0 个答案:

没有答案