Проблемы с размером кадра cv2.videocapture - PullRequest
0 голосов
/ 17 апреля 2020

Я новичок в программировании, и я хотел сделать свое первое обнаружение объекта. Я хотел сделать снимок фона и сравнивать его каждый раз с реальным кадром в моем видеоизображении. Чтобы избежать небольших движений, я отфильтровал самый большой контур и площадь. Это мой код

b_frame = cv2.imread('background.png') 
b_frame_gray = cv2.cvtColor(b_frame,cv2.COLOR_BGR2GRAY)

cap = cv2.VideoCapture(0) 

len_contours = []
y_val = []
x_val = []

x = 0

cap.set(cv2.CAP_PROP_FRAME_HEIGHT,720)
cap.set(cv2.CAP_PROP_FRAME_WIDTH,1080)
while True: 

    ret, frame = cap.read(0) 

    frame_gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
    Diff = cv2.absdiff(b_frame_gray,frame_gray)
    thresh1 = cv2.threshold(Diff, 50,200, cv2.THRESH_BINARY)[1]
    image, contours,hierarchy = cv2.findContours(thresh1, cv2.RETR_CCOMP, cv2.CHAIN_APPROX_SIMPLE)

    for i in range(0,len(contours)):
        len_contours.append((i,len(contours)))

    Con_max = np.where(len_contours == np.amax(len_contours))

    Contour_area = cv2.Contour_area(contours[Con_max[0]])

    if Contour_area >= 1000:


        for i in range(0,len(contours[Con_max[0]])):
            x_werte.append(contours[14][i,0,0])
            y_werte.append(contours[14][i,0,1])

        xmin = np.amin(x_val)
        xmax = np.amax(x_val)
        ymin = np.amin(y_val)
        ymax = np.amax(y_val)
        cv2.rectangle(frame,(xmin,ymax),(xmax,ymin),(255,255,255),10)

    else:
        pass



    cv2.imshow('Video Movement Detection', frame) 

    c = cv2.waitKey(1) 
    if c == 27: 
        break 

cap.release() 
cv2.destroyAllWindows()

это моя ошибка

     15     frame_gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
---> 16     Diff = cv2.absdiff(b_frame_gray,frame_gray)
     17     thresh1 = cv2.threshold(Diff, 50,200, cv2.THRESH_BINARY)[1]
     18     image, contours,hierarchy = cv2.findContours(thresh1, cv2.RETR_CCOMP, cv2.CHAIN_APPROX_SIMPLE)

error: OpenCV(3.4.2) /opt/concourse/worker/volumes/live/9523d527-1b9e-48e0-7ed0-a36adde286f0/volume/opencv-suite_1535558719691/work/modules/core/src/arithm.cpp:659: error: (-209:Sizes of input arguments do not match) The operation is neither 'array op array' (where arrays have the same size and the same number of channels), nor 'array op scalar', nor 'scalar op array' in function 'arithm_op'

кажется, что данные кадры в Diff не подходят, поэтому я настроил с помощью cap.set (... ширина и высота рамки, но она все равно не работает

спасибо:)

...