使用实时视频流中的 OpenCV 进行形状检测
Shape Detection using OpenCV from live video stream
在此 post 中,考虑了 OpenCV 中的形状检测(从图像)主题。延伸话题,如何通过 OpenCV 从实时视频流中实时检测形状?
是的,可以使用 OpenCV 从视频流中检测形状 - 正如 Miki 提到的,VideoCapture
并将每一帧作为单个图像抓取是实现此目的的方法。 C++ 中的代码类似于:
//inside your method, make sure to bring in the libraries needed
VideoCapture capture(0); //opens the first webcam on your computer
Mat frame;
while (true) {
capture >> frame; //pulls the next frame in
if (frame.empty()) { //makes sure it's not empty
printf("No frame!");
break;}
//do whatever you want with that frame here
imshow("framename", frame); //displays the frame to the user
waitKey(1); //longer gives you a longer delay between frames
}
在real-time中做起来有点困难-取决于frame-rate在相机上的速度有多快以及处理程序的计算机有多强大,您可以trim更新率下降到几分之一秒。如果它仍然不够快,通过 opencv cuda
或 opencv gpu
库可能会让您获得所需的更快速度。
在此 post 中,考虑了 OpenCV 中的形状检测(从图像)主题。延伸话题,如何通过 OpenCV 从实时视频流中实时检测形状?
是的,可以使用 OpenCV 从视频流中检测形状 - 正如 Miki 提到的,VideoCapture
并将每一帧作为单个图像抓取是实现此目的的方法。 C++ 中的代码类似于:
//inside your method, make sure to bring in the libraries needed
VideoCapture capture(0); //opens the first webcam on your computer
Mat frame;
while (true) {
capture >> frame; //pulls the next frame in
if (frame.empty()) { //makes sure it's not empty
printf("No frame!");
break;}
//do whatever you want with that frame here
imshow("framename", frame); //displays the frame to the user
waitKey(1); //longer gives you a longer delay between frames
}
在real-time中做起来有点困难-取决于frame-rate在相机上的速度有多快以及处理程序的计算机有多强大,您可以trim更新率下降到几分之一秒。如果它仍然不够快,通过 opencv cuda
或 opencv gpu
库可能会让您获得所需的更快速度。