【问题标题】:create a multichannel zeros mat in python with cv2使用 cv2 在 python 中创建多通道零垫
【发布时间】:2013-04-20 14:22:58
【问题描述】:

我想用 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 都不起作用。

一些提示?

【问题讨论】:

    标签: python opencv numpy


    【解决方案1】:

    试试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 文档中找到它。

    【讨论】:

    • 文档在哪里?
    • 嗯,我在这方面找不到任何官方的 opencv 文档,它清楚地说明你必须这样做,我想这是一个“常识”,你需要 3 层/维度彩色图像。但是我能够找到this SO 问题。
    猜你喜欢
    • 2019-04-08
    • 2014-05-06
    • 2013-03-01
    • 1970-01-01
    • 2014-09-23
    • 2018-06-19
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多