【问题标题】:WIDTH and HEIGHT parameters in OpenCVOpenCV 中的 WIDTH 和 HEIGHT 参数
【发布时间】:2017-10-11 21:16:37
【问题描述】:

我对宽度和高度参数有点困惑:

高度是第一个参数还是第二个?

HEIGHT,WIDTH= img.shape[0:2]WIDTH,HEIGHt= img.shape[0:2]

在调整大小函数height=32 and width=100 或相反?

image=cv2.resize(img, (32, 100), interpolation=cv2.INTER_NEAREST)

【问题讨论】:

  • 首先是高度,这遵循常见的数组语义,即行长度后列长度
  • 即使函数 resize ?
  • 你写的是正确的,size 传递的参数是订单高度,宽度就是你写的
  • docs.opencv.org/trunk/da/d6e/… 在函数中首先调整宽度
  • 我认为函数resize的参数是(width,height)

标签: python-2.7 opencv


【解决方案1】:
new_Ximg = cv2.resize(img, 
                      (img.shape[1], img.shape[0]) 
                     )

doc主要用于C++代码:

  • dsize:输出图像大小;如果它等于 0(Python 中为 None),则计算为:

dsize = Size(round(fx*src.cols), round(fy*src.rows))

  1. 明确指定dsize=dst.size(); fx 和 fy 将据此计算。
resize(src, dst, dst.size(), 0, 0, interpolation);
  • fx:沿水平轴的比例因子;当它等于 0 时,它被计算为 (double)dsize.width/src.cols
  1. 指定 fx 和 fy 并让函数计算目标图像大小。
resize(src, dst, Size(), 0.5, 0.5, interpolation);

【讨论】:

    【解决方案2】:

    .shape 是HEIGHT, WIDTH = img.shape[0:2]。原因是它是一个 numpy 矩阵,其中第一个值表示行数,第二个值表示列数。

    当你调整它的大小时,它是img = cv2.resize(img, (WIDTH, HEIGHT))

    【讨论】:

      【解决方案3】:

      你是对的,你可以自己验证...... 当您执行以下操作时:

      Mat occludedSquare= imread("p4.jpg");
      

      然后你会找到一个像这样的矩阵:

      但 p4 图像实际上是: 宽度:339 高:372

      所以 OpenCV 将 rows → highcols → width

      关联起来

      【讨论】:

        猜你喜欢
        • 2012-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-20
        • 2010-12-15
        • 2021-01-25
        • 1970-01-01
        • 2011-04-03
        相关资源
        最近更新 更多