【问题标题】:Image size (Python, OpenCV)图像大小(Python、OpenCV)
【发布时间】:2012-10-13 13:15:26
【问题描述】:

我想在 python 中获取图像大小,就像我使用 c++ 一样。

int w = src->width;
printf("%d", 'w');

【问题讨论】:

  • -> 的语法是什么?以前没见过……
  • 像在 PHP 中那样访问对象的属性?如果是这样,他们为什么不直接使用点运算符 (.)?
  • @YatharthROCK 在 C++ 中 a->b 相当于 (*a).b
  • @GabiPurcaru 好的,那么* 运算符会做什么呢?在 Python 中,它解压了一个元组或列表...
  • 这叫解引用,允许我们访问 * 操作符指向的变量的值

标签: python opencv size


【解决方案1】:

使用模块cv 中的函数GetSize 并将您的图像作为参数。它以包含 2 个元素的元组形式返回宽度、高度:

width, height = cv.GetSize(src)

【讨论】:

  • OpenCV 3 中似乎没有这个功能。也许它前一段时间被删除了?
  • 链接好像坏了
  • 这个功能好像被贬值了。
【解决方案2】:

使用 openCV 和 numpy 就这么简单:

import cv2

img = cv2.imread('path/to/img',0)
height, width = img.shape[:2]

【讨论】:

  • 为什么需要为此导入numpy
  • 它在内部使用 numpy
【解决方案3】:

我使用 numpy.size() 来做同样的事情:

import numpy as np
import cv2

image = cv2.imread('image.jpg')
height = np.size(image, 0)
width = np.size(image, 1)

【讨论】:

    【解决方案4】:

    对我来说,最简单的方法是获取 image.shape 返回的所有值:

    height, width, channels = img.shape
    

    如果您不想要通道数(用于确定图像是 bgr 还是灰度),只需删除该值:

    height, width, _ = img.shape
    

    【讨论】:

      【解决方案5】:

      这是一个返回图像尺寸的方法:

      from PIL import Image
      import os
      
      def get_image_dimensions(imagefile):
          """
          Helper function that returns the image dimentions
      
          :param: imagefile str (path to image)
          :return dict (of the form: {width:<int>, height=<int>, size_bytes=<size_bytes>)
          """
          # Inline import for PIL because it is not a common library
          with Image.open(imagefile) as img:
              # Calculate the width and hight of an image
              width, height = img.size
      
          # calculat ethe size in bytes
          size_bytes = os.path.getsize(imagefile)
      
          return dict(width=width, height=height, size_bytes=size_bytes)
      

      【讨论】:

        【解决方案6】:

        来自本教程: https://www.tutorialkart.com/opencv/python/opencv-python-get-image-size/

        import cv2
        
        # read image
        img = cv2.imread('/home/ubuntu/Walnut.jpg', cv2.IMREAD_UNCHANGED)
        
        # get dimensions of image
        dimensions = img.shape
        
        # height, width, number of channels in image
        
        height = img.shape[0]
        width = img.shape[1]
        channels = img.shape[2]
        

        来自另一个教程: https://www.pyimagesearch.com/2018/07/19/opencv-tutorial-a-guide-to-learn-opencv/

        image = cv2.imread("jp.png")

        (h, w, d) = image.shape

        请在发布答案之前仔细检查。

        【讨论】:

          【解决方案7】:

          我相信简单的img.shape[-1::-1] 会更好。

          【讨论】:

            【解决方案8】:

            您可以使用image.shape 获取图像的尺寸。它返回 3 个值。第一个值是图像的高度,第二个是宽度,最后一个是通道数。您不需要此处的最后一个值,因此您可以使用以下代码来获取图像的高度和宽度:

            height, width = src.shape[:2]
            print(width, height)
            

            【讨论】:

              猜你喜欢
              • 2018-11-20
              • 1970-01-01
              • 1970-01-01
              • 2014-07-21
              • 2012-12-13
              • 2021-12-23
              • 1970-01-01
              • 1970-01-01
              • 2013-11-28
              相关资源
              最近更新 更多