python – HOGDescriptor,带有可识别对象的视频
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – HOGDescriptor,带有可识别对象的视频,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1754字,纯文字阅读大概需要3分钟。
内容图文
不幸的是我既是python又是openCV初学者,所以如果问题很愚蠢,请原谅我.
我正在尝试使用cv2.HOGDescriptor来识别视频中的对象.我关注的是逐帧识别(即没有跟踪等).
这是我在做的事情:
>我通过使用阅读视频(目前是.mpg)
capture = cv.CreateFileCapture(video_path) #some path in which I have my video
#capturing frames
frame = cv.QueryFrame(capture) #returns cv2.cv.iplimage
>为了最终在帧上使用探测器(我将使用它做
found, w = hog.detectMultiScale(frame, winStride, padding, scale)
我想我需要将帧从cv2.cv.iplimage转换为numpy.ndarray
我做过的
tmp = cv.CreateImage(cv.GetSize(frame),8,3)
cv.CvtColor(frame,tmp,cv.CV_BGR2RGB)
ararr = np.asarray(cv.GetMat(tmp)).
现在我有以下错误:
found, w = hog.detectMultiScale(ararr, winStride, padding, scale)
TypeError: a float is required
哪里
winStride=(8,8)
padding=(32,32)
scale=1.05
我真的不明白哪个元素是真正的问题.即哪个号码应该是浮点数?
任何帮助赞赏
解决方法:
没有必要自己执行额外的转换,这个问题与Python的新旧OpenCV绑定的混合有关.关于hog.detectMultiScale的另一个问题仅仅是由于参数排序不正确.
通过检查帮助(cv2.HOGDescriptor().detectMultiScale)可以直接看到第二个问题:
detectMultiScale(img[, hitThreshold[, winStride[, padding[,
scale[, finalThreshold[, useMeanshiftGrouping]]]]]])
如您所见,每个参数都是可选的,但第一个(图像).排序也很重要,因为你有效地使用winStride作为第一个,而预期它将是第二个,依此类推.您可以使用命名参数来传递它. (在之前的答案中已经观察到了这一切.)
另一个问题是代码组合,这是一个你应该考虑使用的示例代码:
import sys
import cv2
hog = cv2.HOGDescriptor()
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
hogParams = {'winStride': (8, 8), 'padding': (32, 32), 'scale': 1.05}
video = cv2.VideoCapture(sys.argv[1])
while True:
ret, frame = video.read()
if not ret:
break
result = hog.detectMultiScale(frame, **hogParams)
print result
内容总结
以上是互联网集市为您收集整理的python – HOGDescriptor,带有可识别对象的视频全部内容,希望文章能够帮你解决python – HOGDescriptor,带有可识别对象的视频所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。