使用 OpenCV 与网络摄像机连接
在计算机视觉领域,实时图像采集通常是至关重要的要求。网络摄像机通过各种协议流式传输视频内容,提供了一种获取图像的便捷方法。 OpenCV 是一个广泛使用的计算机视觉库,提供从此类相机捕获帧的功能。
实现方法
OpenCV 2.0 及更高版本提供了通用的接口解决方案与网络摄像机。以下 C 代码演示了如何实现此目的:
#include <cv.h> #include <highgui.h> #include <iostream> int main(int, char**) { cv::VideoCapture vcap; cv::Mat image; // TODO: Replace with appropriate stream address const std::string videoStreamAddress = "rtsp://cam_address:554/live.sdp"; vcap.open(videoStreamAddress); if (!vcap.isOpened()) { std::cout << "Failed to open video stream." << std::endl; return -1; } cv::namedWindow("Output Window"); while (true) { vcap >> image; if (image.empty()) { std::cout << "No frame available." << std::endl; cv::waitKey(0); continue; } cv::imshow("Output Window", image); if (cv::waitKey(1) >= 0) break; } return 0; }
H.264 流媒体注意事项
许多现代网络摄像机支持 H.264 视频压缩,需要修改用于与 OpenCV 正确集成的 RTSP URL。有关特定 URL 格式,请参阅相机的 API 文档。例如,以下示例是安讯士网络摄像机的 RTSP 地址:
rtsp://10.10.10.10:554/axis-media/media.amp
其中“10.10.10.10”代表摄像机的 IP 地址,“554”代表其 RTSP 端口。
通过结合提供的代码并考虑这些 H.264 流媒体注意事项,您可以使用 OpenCV 有效地从网络摄像机捕获帧,解锁各种图像处理和计算机视觉应用。
以上是如何使用 OpenCV 从网络摄像机捕获帧?的详细内容。更多信息请关注PHP中文网其他相关文章!