我正在尝试使用HOG + SVM方法制作自定义对象检测器(椅子)。我的行动计划是:
如果一切顺利,我的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循环有关。
有人可以帮帮我吗?此外,如果您能想出更好的方法,请告诉我:)
答案 0 :(得分:1)
这是代码中的错误
for i in range(0,19):
image = cv2.imread(str(i))
这转换为cv2.imread("0")
。 cv2.imread()
功能需要传递像“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")