2016-08-23 2 views
0

Привет, у меня есть этот блок кода, который мне был предложен, и я пытаюсь изменить его, используя Cap, заданный для ширины и высоты, чтобы настроить общий размер четырехъядерного дисплея, но все остальные запускают его выбрасывает этот ValueError: не может передавать входной массив из формы (240,320) в форму (480,640). Конечно, цифры меняются в зависимости от того, как я изменяю значения размера в наборе. Моя общая цель - подключить квадроцикл к tkinter gui, который у меня есть сейчас, показывая одиночные каналы просто отлично. В настоящее время мой gui отображает канал 640x480, и я хочу отобразить квадроцикл в тот же размерный кадр. Вот текущий код:Изменение размера квадратной рамки Видео с крышки

import numpy as np 
import cv2 

cap = cv2.VideoCapture(0) 
ret, frame = cap.read() 

red = np.zeros(frame.shape, 'uint8') 
green = np.zeros(frame.shape, 'uint8') 
blue = np.zeros(frame.shape, 'uint8') 

cap.set(cv2.CAP_PROP_FRAME_WIDTH, int(640 *.5)) 
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, int(480 *.5)) 

while(True): 
    ret, frame = cap.read() 
    b, g, r = cv2.split(frame) 

    red[..., 0], red[..., 1], red[..., 2] = r, r, r 
    green[..., 0], green[..., 1], green[..., 2] = g, g, g 
    blue[..., 0], blue[..., 1], blue[..., 2] = b, b, b 

    final = cv2.vconcat((
     cv2.hconcat((frame, red)), 
     cv2.hconcat((green, blue)) 
    )) 

    cv2.imshow('frame', final) 

    k = cv2.waitKey(30) & 0xff 
    if k == 27: 
     break 

cap.release() 
cv2.destroyAllWindows() 
+0

Вы можете 'resize' рамку, когда вы читали его; D – Miki

+0

я не знаю, как я пропустил, что лол, спасибо @Miki –

ответ

0

Перемещение cap.set и цветовых форм после местоположения чтения исправляет мою проблему.

import numpy as np 
import cv2 

cap = cv2.VideoCapture(0) 
ret, frame = cap.read() 

while(True): 
    ret, frame = cap.read() 
    cap.set(cv2.CAP_PROP_FRAME_WIDTH, int(640 *.5)) 
    cap.set(cv2.CAP_PROP_FRAME_HEIGHT, int(480 *.5)) 
    red = np.zeros(frame.shape, 'uint8') 
    green = np.zeros(frame.shape, 'uint8') 
    blue = np.zeros(frame.shape, 'uint8') 
    b, g, r = cv2.split(frame) 

    red[..., 0], red[..., 1], red[..., 2] = r, r, r 
    green[..., 0], green[..., 1], green[..., 2] = g, g, g 
    blue[..., 0], blue[..., 1], blue[..., 2] = b, b, b 

    final = cv2.vconcat((
     cv2.hconcat((frame, red)), 
     cv2.hconcat((green, blue)) 
    )) 

    cv2.imshow('frame', final) 

    k = cv2.waitKey(30) & 0xff 
    if k == 27: 
     break 

cap.release() 
cv2.destroyAllWindows() 
Смежные вопросы