2013-04-26 13 views
5

Chcę utworzyć wielokanałowy obiekt matowy w pythonie z otoką cv2 opencv.utworzyć wielokanałową maty zer w pythonie z cv2

Znalazłem przykłady w sieci, gdzie C++ Mat :: zeros jest zamieniane na numpy.zeros, co wydaje się być dobre. ale nie typu wielokanałowe wydaje się pasować ..

spojrzenie na kod:

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() 

chcę uniknąć m = cv2.cvtColor(m, cv2.COLOR_GRAY2BGR) ale ani cv2.CV_8UC3np.uin32 prace.

jakaś podpowiedź?

Odpowiedz

12

Spróbuj jak size:

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

zasadzie to, co zrobiłem, aby znaleźć to, co argumenty potrzebne do matrycy wynosi:

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

Ale prawdopodobnie mogła go znaleźć w dokumentacji OpenCV, jak również.

+0

gdzie w dokumentacji proszę? – nkint

+0

Hm, nie mogę znaleźć żadnych oficjalnych dokumentów na ten temat, co wyraźnie mówi, że musisz to zrobić w ten sposób, myślę, że to "powszechna wiedza", że potrzebujesz 3 warstw/wymiarów na obraz kolorowy. Jednak udało mi się znaleźć [this] (http://stackoverflow.com/questions/12881926/create-a-new-rgb-opencv-image-using-python) pytanie SO. – gatto