我正在考虑构建一个快速和肮脏的脚本来帮助一个朋友。它需要接受摄像头的输入,并对其进行非常简单的计算(考虑像素随时间的增量亮度,计算相对简单)。
我目前倾向于c++和opencv,但我想知道,因为这是一个计算成本低廉的任务,(当然相对而言)如果有一种方法可以简单地使用ruby-opencv或其他一些技术来保持它在脚本语言中。
我还没能找到任何方法导入实时网络摄像头图像到一个ruby脚本,因为我一直在寻找,但我很高兴有我的搜索技能被证明是不足的美妙的SO社区!
我看过的地方:
hornetseye
c++脚本(我倾向于)
使用ffi
在总结;是否有一种方法导入实时网络摄像头图像到一个ruby脚本上执行简单的计算?(我在考虑与opencv,但没有绑定到任何特定的想法。
使用ruby-opencv可以捕获和显示相机图像,如下所示
#!/usr/bin/env ruby
require 'opencv'
include OpenCV
FPS = 30
input = CvCapture.open
win = GUI::Window.new 'video'
loop do
img = input.query
win.show img
key = GUI.wait_key 1000 / FPS
break if key and key.chr == "e"
end
OpenCV有Python绑定,可以在底层调用本地c++代码。他们也有很多关于如何使用Python API的教程。打开视频提要的一个基本示例可以在这里找到,更长的教程列表可以在这里找到。如果你对使用OpenCV做更多的工作感兴趣,我强烈建议你阅读它们。
第一个教程的简要总结:
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(True):
# Capture frame-by-frame
ret, frame = cap.read()
# Do image processing here, using frame
# Display the resulting frame
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
使用hornetseye-v4l2和hornetseye-xorg你可以捕捉和显示像这样的相机图像
#!/usr/bin/env ruby
require 'hornetseye_v4l2'
require 'hornetseye_xorg'
include Hornetseye
input = V4L2Input.new
X11Display.show { input.read }