函数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")
那么如何包含路径和字符串“我”在该函数? image = cv2.imread(“/ Users/munirmalik/cvprojek/cod/chairs /”str(i))给了我一个错误 –
@MunirMalik我编辑了答案。您的图片是否命名为0.jpg,1.jpg,2. jpg等? –
Yeap!它现在的作品,谢谢! –