2013-04-26 5 views
5

Ich möchte ein Mehrkanal-Mat-Objekt in Python mit CV2 OpenCV-Wrapper erstellen.erstellen Sie eine Multichannel-Nullen-Matte in Python mit CV2

Ich habe Beispiele im Netz gefunden, wo die C++ Mat :: Nullen durch numpy.zeros ersetzt wird, das scheint gut. aber kein Multikanal-Typ scheint zu passen ..

Blick auf den Code:

import cv2 
import numpy as np 

size = 200, 200 
m = np.zeros(size, dtype=np.uint8) # ? 
m = cv2.cvtColor(m, cv2.COLOR_GRAY2BGR) 
p1 = (0,0) 
p2 = (200, 200) 
cv2.line(m, p1, p2, (0, 0, 255), 10) 

cv2.namedWindow("draw", cv2.CV_WINDOW_AUTOSIZE) 
while True: 
    cv2.imshow("draw", m) 

    ch = 0xFF & cv2.waitKey(1) 
    if ch == 27: 
     break 
cv2.destroyAllWindows() 

i m = cv2.cvtColor(m, cv2.COLOR_GRAY2BGR) vermeiden wollen aber weder cv2.CV_8UC3np.uin32 funktioniert.

ein Hinweis?

Antwort

12

dies versuchen, so size:

size = 200, 200, 3 
m = np.zeros(size, dtype=np.uint8) 

Im Grunde, was ich finden tat, welche Argumente ich für die Matrix müssen, ist:

img = cv2.imread('/tmp/1.jpg') 
print img.shape, img.dtype 
# (398, 454, 3), uint8 

Aber man könnte es wohl auch in OpenCV-Dokumentation.

+0

wo in der Dokumentation bitte? – nkint

+0

Hm, ich kann keine offizielle opencv-Dokumentation zu diesem Thema finden, die eindeutig besagt, dass Sie es auf diese Weise tun müssen, ich denke, es ist "allgemein bekannt", dass Sie 3 Ebenen/Dimensionen für ein Farbbild benötigen. Jedoch konnte ich [diese] (http://stackoverflow.com/questions/12881926/create-a-new-rgb-opencv-image-using-python) SO Frage finden. – gatto

Verwandte Themen