函数imshow中的错误

问题描述:

我想使用HOG + SVM方法制作自定义对象检测器(椅子)。我的行动计划是:函数imshow中的错误

  • 遍历我的文件夹
  • 读取和图像调整它们的大小
  • 将其转换为使用hog.compute向量()函数
  • ,然后将它们存储到一个数据文件

如果一切顺利,我的SVM分类器将处理其余的。

理想情况下,它将能够识别通过我的摄像头显示的椅子。

这是我想要使用(只有初始位)代码:

import cv2 
import os 
import numpy as np 

def loadimg(): 

    for i in range(0,19): 
     image = cv2.imread(str(i)) 
     cv2.imshow("img",image) 
     (winW, winH) = (500, 500) 
     r = 128.0/image.shape[1] 
     dim = (128, int(image.shape[0] * r)) 
     img = cv2.resize(image, dim, interpolation = cv2.INTER_AREA) 
    return img 

def hoggify(img): 
    imeg = hog.compute(img) 
    return imeg 

for fn in os.listdir('/Users/munirmalik/cvprojek/cod'): 
loadimg() 
hoggify(imeg) 
np.savetxt('data.txt') 

这是我得到的错误:

cv2.error: /Users/munirmalik/opencv/modules/highgui/src/window.cpp:304: error: (-215) size.width>0 && size.height>0 in function imshow 

我GOOGLE了错误并它说imread()没有读取我的图片,我假设它与loadimg()函数中的for循环有关。

有人可以帮我吗?此外,如果你能想到的一个更好的方式去这样做,请不要让我知道:)

这是在你的代码

for i in range(0,19): 
     image = cv2.imread(str(i)) 

这相当于cv2.imread("0")的bug。 cv2.imread() functon需要传递一个像“path/to/image.jpg”这样的图像地址。我不知道你的图片是如何排列的文件结构,但参数cv2.imread()应在文件扩展名,如:JPG,PNG结束,等

按OP的评论,代码应改为:

for i in range(0,19): 
     image = cv2.imread(r"/Users/munirmalik/cvprojek/cod/chairs/" + str(i)+ ".jpg") 
+0

那么如何包含路径和字符串“我”在该函数? image = cv2.imread(“/ Users/munirmalik/cvprojek/cod/chairs /”str(i))给了我一个错误 –

+0

@MunirMalik我编辑了答案。您的图片是否命名为0.jpg,1.jpg,2. jpg等? –

+0

Yeap!它现在的作品,谢谢! –