【问题标题】:How to read an image in Python OpenCV如何在 Python OpenCV 中读取图像
【发布时间】:2018-03-14 10:17:26
【问题描述】:

我正在尝试在 Python OpenCV 中读取和显示图像。

执行以下代码:

import cv2
import numpy as np
import matplotlib.pyplot as plt

img = cv2.imread('dumb.jpg', cv2.IMREAD_GRAYSCALE)

cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

导致以下错误:

cv2.错误: C:\build\master_winpack-bindings-win64-vc14-static\opencv\modules\highgui\src\window.cpp:325: 错误: (-215) size.width>0 && size.height>0 in function cv: :imshow

如何解决这个问题?

注意:我具备执行此操作所需的所有先决条件(python 2.7、opencv 3.3 matplotlib, numpy)

【问题讨论】:

    标签: python opencv numpy matplotlib


    【解决方案1】:
    import cv2
    import matplotlib.pyplot as plt
    %matplotlib inline
            
    # Hide grid lines
    fig, ax = plt.subplots(figsize=(10,10))
    ax.grid(False)
        
    im=cv2.imread('./my_images.jpg')
    plt.imshow(cv2.cvtColor(im, cv2.COLOR_BGR2RGB))
    plt.show()
    

    它使用cv2.COLOR_BGR2RGB,因为它将使用BGR的OpenCV的默认设置转换为RGB格式

    【讨论】:

      【解决方案2】:

      如果您尝试使用 matplotlib 显示 OpenCV 图像,请使用以下代码。

      import numpy as np
      import cv2
      import matplotlib.pyplot as plt
      %matplotlib inline  # if you are running this code in Jupyter notebook
      
      # reads image 'opencv-logo.png' as grayscale
      img = cv2.imread('/path_to_image/opencv-logo.png', 0) 
      plt.imshow(img, cmap='gray')
      

      【讨论】:

        【解决方案3】:

        我写了一个short post to learn image reading with OpenCV in Python。你可以看到下面的代码sn-p和描述。

        import cv2 #Import openCV
        import sys #import Sys. Sys will be used for reading from the command line. We give Image name parameter with extension when we will run python script
        
        #Read the image. The first Command line argument is the image
        image = cv2.imread(sys.argv[1]) #The function to read from an image into OpenCv is imread()
        
        #imshow() is the function that displays the image on the screen.
        #The first value is the title of the window, the second is the image file we have previously read.
        cv2.imshow("OpenCV Image Reading", image)
        
        cv2.waitKey(0) #is required so that the image doesn’t close immediately. It will Wait for a key press before closing the image.
        

        【讨论】:

          【解决方案4】:

          看起来你的代码没问题。问题似乎出在参数中提供的图像维度上。错误代码显示:size > 0 && width > 0。这个条件不能正常满足。维度sizewidth 小于零。您可能需要检查任何其他图像并尝试使用它。

          【讨论】:

            【解决方案5】:

            试试这个:

            import cv2 as cv              #openCV-3.4.1
            import numpy as np
            import matplotlib.pyplot as plt
            img = cv.imread('image path and name .file type ',0)
            cv.imshow('img',img)
            cv.waitKey(0)
            cv.destroyAllWindows()
            

            【讨论】:

              【解决方案6】:

              此错误消息的原因是 cv2.imread() 无法找到它正在寻找图像的图像。如果您将完整路径添加到图像,这应该可以工作,例如

              img = cv2.imread('/home/foo/images/dumb.jpg',cv2.IMREAD_GRAYSCALE)
              

              【讨论】:

              • 这应该是公认的答案,大多数其他答案只是显示加载图像的不同方式,如果给定的文件路径不正确,同样会失败。
              【解决方案7】:

              http://docs.opencv.org/3.1.0/dc/d2e/tutorial_py_image_display.html有教程

               import numpy as np
               import cv2
              
               # Load an color image in grayscale
               img = cv2.imread('/path_to_image/messi5.jpg',0)
              
               # show image
              
               cv2.imshow('image',img)
               cv2.waitKey(0)
               cv2.destroyAllWindows()
              

              使用图像的绝对路径,那么您就没有路径问题

              https://en.wikipedia.org/wiki/Path_(computing)#Absolute_and_relative_paths

              OpenCV Error: (-215)size.width>0 && size.height>0 in function imshow

              【讨论】:

                【解决方案8】:

                使用 0 而不是 cv2.IMREAD_GRAYSCALE,我会硬编码文件的位置,而不是像那样引用它,例如,如果它在 C 驱动器上,则放入 'C:\\Filename.jpg'

                【讨论】:

                  【解决方案9】:

                  要使用 OpenCV 读取图像,您必须使用以下合成器。如果还是不行,说明安装有问题。

                  import cv2
                  
                  image = cv2.imread('path_of_the_image.png')
                  
                  cv2.imshow('img', image)
                  cv2.waitKey(0)
                  

                  你没有发布它给出的错误..

                  编辑:我不明白负面的观点......为了什么??

                  【讨论】:

                  • cv2.error: C:\build\master_winpack-bindings-win64-vc14-static\opencv\modules\highgui\src\window.cpp:325: error: (-215) size.width >0 && size.height>0 在函数 cv::imshow
                  • 删除 cv2.IMREAD_GRAYSCALE 并使用双反斜杠 `\\` 放置图像的正确路径
                  猜你喜欢
                  • 1970-01-01
                  • 2014-03-06
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2020-08-13
                  • 2017-11-23
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多