【问题标题】:Why is OpenCV switching the shape when resizing?为什么OpenCV在调整大小时会切换形状?
【发布时间】:2018-11-14 03:49:56
【问题描述】:

加载图像然后调整其大小会导致图像被转置:

import cv2

image = cv2.imread("example.png", cv2.IMREAD_GRAYSCALE)
print (image.shape)
print (cv2.resize(image, dsize=image.shape).shape)

有输出:

(337, 458)
(458, 337)

为什么使用resize操作会改变高度和宽度?更准确的说,为什么resize操作符期望dsize参数的顺序是(width, height),而shape属性的顺序是(height, width)?

【问题讨论】:

    标签: opencv


    【解决方案1】:

    你说的!答案很简单。

    当你这样做时:

    print(image.shape)
    

    它打印rowscolumns,即高度和宽度。

    当你调整它的大小时,你必须告诉它新的宽度和高度,而不是新的高度和宽度。

    【讨论】:

    • 谢谢,确实如此。您能否添加解释,为什么选择这种(明显的)不一致?
    • 认为 这是因为 image.shape 是 Python/NumPy 的东西,而 NumPy 数组首先按行索引,然后按列索引。这就是所谓的“行专业” orderung。 OpenCV 是从另一种方式来的,通常首先按列索引,可能是因为它起源于 C 编程世界。如果我能找到更好的解释,我会添加任何我能找到的链接——其他人也可以。
    猜你喜欢
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    • 1970-01-01
    • 2019-10-20
    • 2016-02-08
    • 1970-01-01
    相关资源
    最近更新 更多