为什么cv2.rectangle有时返回np.ndarray公司,有时cv2.UM

2024-04-26 06:16:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在对一些图像进行可视化处理,发现opencv的cv2.rectangle的怪异行为:

  • 当输入图像是np.ndarray公司,比如arr,cv2.rectangle()返回一个np.ndarray公司,并用矩形绘制arr。

  • 当输入图像是arr的某个变体时,如arr[:,:,[2,0,1]],cv2.rectangle()返回一个cv2.UMat,并且不绘制矩形。

我目前的环境是:

  • Python 3.7
  • Opencv 4.1版

代码如下:

  1. 首先生成随机图像。在
import numpy as np
import cv2
import copy

img = np.random.randint(0, 255, (100, 120, 3)).astype("uint8")
  1. 现在添加一个矩形
^{pr2}$
  1. 你会发现:

    • ret是一个np.ndarray公司在
    • ret的可视化和一个绘制了一个矩形的显示
  2. 尝试另一种方法:

b = copy.deepcopy(img)
c = b[:, :, [2, 1, 0]]
ret = cv2.rectangle(c, (0, 0), (10, 10), color=(255, 255, 255), thickness=2)
  1. 你会发现:

    • ret是cv2.UMat
    • ret或c的可视化显示没有绘制矩形

我真的很好奇我的代码有什么问题吗?或者背后隐藏着什么?


Tags: 代码图像import可视化np绘制公司cv2

热门问题