attribute 'winSize' of 'cv2.HOGDescriptor' objects is not writable
时间: 2023-11-15 13:05:54 浏览: 155
`cv2.HOGDescriptor` 对象的 `winSize` 属性是只读的,不能直接进行修改。如果你想要修改窗口大小,可以创建一个新的 `cv2.HOGDescriptor` 对象,并设置相应的参数。例如:
```python
import cv2
# 创建一个新的 HOGDescriptor 实例
hog = cv2.HOGDescriptor()
# 设置 HOGDescriptor 实例的参数
winSize = (64, 128)
blockSize = (16, 16)
blockStride = (8, 8)
cellSize = (8, 8)
nbins = 9
hog = cv2.HOGDescriptor(winSize, blockSize, blockStride, cellSize, nbins)
# 获取默认的人体检测器
default_people_detector = cv2.HOGDescriptor_getDefaultPeopleDetector()
# 设置 HOGDescriptor 实例的 SVM detector
hog.setSVMDetector(default_people_detector)
# 在图像上进行人体检测
img = cv2.imread('test.jpg')
rects, weights = hog.detectMultiScale(img, winStride=(8, 8), padding=(32, 32), scale=1.05)
```
在上面的代码中,我们创建了一个新的 `cv2.HOGDescriptor` 对象,并设置了窗口大小、块大小、块步长、单元格大小、直方图 bin 数量等参数。然后,我们获取默认的人体检测器,并将其设置为 SVM detector。最后,在一张测试图像上进行人体检测,并得到了检测结果。
阅读全文