- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我仍在编写书籍扫描脚本,现在,我所需要的只是能够自动检测翻页。这本书占据了 90% 的屏幕(我使用了一个粗糙的网络摄像头来检测运动),所以当我翻页时,运动的方向基本上是同一个方向。
我已经修改了一个运动跟踪脚本,但衍生品让我无处可去:
#!/usr/bin/env python
import cv, numpy
class Target:
def __init__(self):
self.capture = cv.CaptureFromCAM(0)
cv.NamedWindow("Target", 1)
def run(self):
# Capture first frame to get size
frame = cv.QueryFrame(self.capture)
frame_size = cv.GetSize(frame)
grey_image = cv.CreateImage(cv.GetSize(frame), cv.IPL_DEPTH_8U, 1)
moving_average = cv.CreateImage(cv.GetSize(frame), cv.IPL_DEPTH_32F, 3)
difference = None
movement = []
while True:
# Capture frame from webcam
color_image = cv.QueryFrame(self.capture)
# Smooth to get rid of false positives
cv.Smooth(color_image, color_image, cv.CV_GAUSSIAN, 3, 0)
if not difference:
# Initialize
difference = cv.CloneImage(color_image)
temp = cv.CloneImage(color_image)
cv.ConvertScale(color_image, moving_average, 1.0, 0.0)
else:
cv.RunningAvg(color_image, moving_average, 0.020, None)
# Convert the scale of the moving average.
cv.ConvertScale(moving_average, temp, 1.0, 0.0)
# Minus the current frame from the moving average.
cv.AbsDiff(color_image, temp, difference)
# Convert the image to grayscale.
cv.CvtColor(difference, grey_image, cv.CV_RGB2GRAY)
# Convert the image to black and white.
cv.Threshold(grey_image, grey_image, 70, 255, cv.CV_THRESH_BINARY)
# Dilate and erode to get object blobs
cv.Dilate(grey_image, grey_image, None, 18)
cv.Erode(grey_image, grey_image, None, 10)
# Calculate movements
storage = cv.CreateMemStorage(0)
contour = cv.FindContours(grey_image, storage, cv.CV_RETR_CCOMP, cv.CV_CHAIN_APPROX_SIMPLE)
points = []
while contour:
# Draw rectangles
bound_rect = cv.BoundingRect(list(contour))
contour = contour.h_next()
pt1 = (bound_rect[0], bound_rect[1])
pt2 = (bound_rect[0] + bound_rect[2], bound_rect[1] + bound_rect[3])
points.append(pt1)
points.append(pt2)
cv.Rectangle(color_image, pt1, pt2, cv.CV_RGB(255,0,0), 1)
num_points = len(points)
if num_points:
x = 0
for point in points:
x += point[0]
x /= num_points
movement.append(x)
if len(movement) > 0 and numpy.average(numpy.diff(movement[-30:-1])) > 0:
print 'Left'
else:
print 'Right'
# Display frame to user
cv.ShowImage("Target", color_image)
# Listen for ESC or ENTER key
c = cv.WaitKey(7) % 0x100
if c == 27 or c == 10:
break
if __name__=="__main__":
t = Target()
t.run()
它检测所有框的平均中心的平均运动,这是非常低效的。我将如何快速准确地检测此类运动(即在阈值内)?
我正在使用 Python,并且我打算坚持使用它,因为我的整个框架都是基于 Python 的。
非常感谢您的帮助,在此先感谢大家。干杯。
最佳答案
我以前没有在 Python 中使用过 OpenCV,只是在 C++ 和 openframeworks 中使用过一点。
为此我假设 OpticalFlow的 velx,vely 属性会起作用。
有关光流如何工作的更多信息,请查看 this paper .
HTH
关于Python OpenCV : Detecting a general direction of movement?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4496063/
Cesium SandcaSTLe demo说明了使用“movement”和“movement.endPosition”来获取鼠标移动的 Cartesian2 坐标。一个例子是 "Picking" d
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我一直在玩 webGL,我已经达到了可以制作图形非常可怜的小型三维游戏的程度(到目前为止,它更多的是概念/功能的证明)。对于三维体验来说,向任意方向无限移动鼠标来旋转第一人称视角是很不错的。 Poin
这是我第一次在这里写文章。我对 JQuery 动画有一些问题:当持续时间非常慢(例如 10000)时, Action 不够平滑。我的 div 需要一个“自然”的运动。有人知道我的问题的解决方案吗?或者
我正在开发离线 FPS 多人游戏。 当 Player Rotation 值为 (0,0,0) 时,Player 会朝着完美的方向移动。但是,我的问题是当我使用触摸输入旋转相机时。玩家也可以旋转脸部并按
我在分布式系统中遇到分片移动问题。 【问题】 最初每个分区负责任意数量的分片。 (这个数字可以是任意的,因为系统支持将分片从一个分区移动到另一个分区) 然后一个新的分区来了,系统需要重新分片。目标是使
是否可以在窗口中停止鼠标移动并仅允许在特定框中移动? 例如,我有一个div,其宽度:200px和高度:200px,只允许在此div中移动鼠标。 谢谢。 最佳答案 Javascript 可以读取鼠标位置
我创建了一个自定义组件,它扩展了 TextField 并允许对特定类型的字符串进行高级编辑。 箭头键已被重新定义以允许特定行为并且应该不会触发默认的插入符移动但是我似乎无法阻止它移动。我已经使用了()
我创建了一个自定义组件,它扩展了 TextField 并允许对特定类型的字符串进行高级编辑。 箭头键已被重新定义以允许特定行为并且应该不会触发默认的插入符移动但是我似乎无法阻止它移动。我已经使用了()
我想做一个函数,根据传递的字母改变特定的值。 (这些基本上给出了方向:东,西......) 代码是: data Movement = N Int | S Int | E Int | W Int de
我正在从事一个非常酷的项目,我正在收集有关光标移动的数据,但我遇到了一个问题,我认为我需要一些帮助。我不断读取有关光标 x 和 y 位置的数据(以及其他相关数据),一旦光标在 y 维度上超过某个阈值,
我怎样才能在 Sprite 被施加这样的冲动后停止它: player.physicsBody!.applyImpulse(CGVectorMake(50, 0)) 是否有可能使运动在一段时间内减少?
我有一个子菜单,当悬停在导航元素上时,它会变为可见。当该元素不再悬停时,子菜单将变为不可见并向上移动。我已经在下面附上了我的部分代码。我面临的问题是,由于子菜单就在导航元素的正下方,向上移动会在转换期
我是 Unity 新手,正在关注 this tutorial .当我尝试执行代码时遇到的错误应该是左右移动播放器是: UnassignedReferenceException: The variabl
谷歌最近在那里重新设计了移动行为 map 。现在在移动设备上,您可以用两根手指移动 map 。 (请参阅手机上的 map-simple 示例,而不是任何浏览器模拟器!)。 我想在 openlayer
据我了解,GPS 的精度有限。是否有可能在 3D 空间中获得一个人的更精确的位置? 我计划编写一个应用程序,用户可以将手机向任何方向移动,但只需要移动几英尺。是否有任何技术(也许使用加速度计和陀螺仪)
如何防止图像移动。如果图像的位置 = 350,如何防止移动。类似于遏制,恰恰相反。请帮忙。 $('#image').draggable( {
这是我应该问的问题,而不是这个: Emacs evil: space as a prefix key in motion state 我想定义一堆用于移动、移动、打开和关闭窗口和缓冲区的命令,这些命令
我是计算机类三人组的三分之一(高中新生)。对于我们的项目,我们决定用 Java 制作一个吃 bean 人风格的游戏。我们都没有太多经验,所以到目前为止,我们基本上都是在自学。我们已经取得了相当大的进步
我正在开发一个类似 HTML5 3D fps 的引擎,它看起来已经相当不错,但由于这可能是制作 3D 的最糟糕的语言选择之一,因此有时会出现明显的延迟。 我将运动 (WASD) 编程为独立于渲染速度,
我是一名优秀的程序员,十分优秀!