用cv2在python中创建一个多声道的零点

时间:2013-04-26 12:01:58

标签: python opencv numpy

我想用cv2 opencv包装器在python中创建一个多通道mat对象。

我在网上找到了c ++ Mat :: zeros被numpy.zeros替换的例子,看起来不错。但没有多声道类型似乎适合..

查看代码:

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

我想避免m = cv2.cvtColor(m, cv2.COLOR_GRAY2BGR),但cv2.CV_8UC3 np.uin32都不起作用。

一些提示?

1 个答案:

答案 0 :(得分:19)

请尝试size

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

基本上我所做的就是找到矩阵所需的参数:

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

但也可以在OpenCV文档中找到它。