2013-04-26 18 views
5

tôi muốn tạo một đối tượng mat đa kênh trong python với cv2 opencv wrapper.tạo ra một số không đa kênh mat trong python với cv2

Tôi đã tìm thấy các ví dụ trên mạng nơi C++ Mat :: số không được thay thế bằng numpy.zeros, điều đó có vẻ tốt. nhưng không có loại đa kênh có vẻ phù hợp ..

xem mã:

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

tôi muốn tránh m = cv2.cvtColor(m, cv2.COLOR_GRAY2BGR) nhưng không cv2.CV_8UC3np.uin32 công trình.

một số gợi ý?

Trả lời

12

Hãy thử điều này như size:

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

Về cơ bản những gì tôi đã làm để tìm lý lẽ tôi cần cho ma trận là:

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

Nhưng có một có thể có thể tìm thấy nó trong tài liệu OpenCV là tốt.

+0

trong tài liệu xin vui lòng? – nkint

+0

Hm, tôi không thể tìm thấy bất kỳ tài liệu opencv chính thức về điều này, trong đó nêu rõ rằng bạn phải làm theo cách này, tôi đoán đó là một "kiến thức phổ biến" mà bạn cần 3 lớp/kích thước cho một hình ảnh màu. Tuy nhiên tôi đã có thể tìm thấy [this] (http://stackoverflow.com/questions/12881926/create-a-new-rgb-opencv-image-using-python) SO câu hỏi. – gatto

Các vấn đề liên quan