CV2.imread()函数问题

昨天要处理一批图片,以前一直用matlab,昨天就想,反正在学python,就用python练练手,不练不知道,一练吓一跳!

要从指定文件夹批量读取图片,然后进行开运算,代码如下

import cv2
import os
import numpy as np
kernel = np.ones((6,6),np.uint8)
path="D:/Data/ship_data/223"
file_dir=os.listdir(path)
for img in file_dir:
    imgread = cv2.imread(img, 0)
    opening = cv2.morphologyEx(imgread, cv2.MORPH_OPEN, kernel)

报错如下

Traceback (most recent call last):
  File "C:/Users/JoyingLiu/PycharmProjects/model/Open_operation.py", line 15, in
    opening = cv2.morphologyEx(imgread, cv2.MORPH_OPEN, kernel)
cv2.error: OpenCV(3.4.3) C:\bld\opencv_1539051587419\work\modules\core\src\matrix.cpp:756: error: (-215:Assertion failed) dims <= 2 && step[0] > 0 in function 'cv::Mat::locateROI'

网上找了半天,都是说这个错误是路径问题,我检查了好几遍,我的路径是对的,而且我也没有用斜杠\,我用的反斜杠/,我也试了两个斜杠\\,但是问题没有解决,我打印了文件列表,也是对的。我就奇了怪了。

后面想到之前读图片都是一张单独读的,单独的时候都是写好路径的。

所以问题就出在这了,CV2.imread()函数的文件路径要是具体的路径。这样写不对。必须把路径写完整。

之后用golb,就没有报错了

import cv2
import os
import numpy as np
kernel = np.ones((6,6),np.uint8)
import glob
kernel = np.ones((6,6),np.uint8)
for img in glob.glob("D:/Data/ship_data/223/*.png"):
    imgread = cv2.imread(img,0)
    opening = cv2.morphologyEx(imgread, cv2.MORPH_OPEN, kernel)

 

你可能感兴趣的:(学习,bug,python)