视频处理简单实例 [OpenCV 笔记2]
VideoCapture是OpenCV 2.X中新增的类,提供从摄像机或视频文件捕获视频的C++接口。利用它读入视频的方法一般有两种:
// method 1 VideoCapture capture; capture.open("1.avi"); // method 2 VideoCapture capture("1.avi");
读取并播放视频
ReadPlayVideo.cxx
#include <opencv2/opencv.hpp> int main(){ // read video cv::VideoCapture capture("1.avi"); // show each frame while(1){ cv::Mat frame; // read current frame; capture >> frame; if(frame.empty()) break; // show current frame imshow("Read Video", frame); cv::waitKey(30); } return 0; }
CMakeList.txt
cmake_minimum_required (VERSION 2.8) project (ReadPlayVideo) # find OpenCV packages find_package( OpenCV REQUIRED ) include_directories( ${OpenCV_INCLUDE_DIRS} ) # add the executable add_executable (ReadPlayVideo ReadPlayVideo.cxx) target_link_libraries(ReadPlayVideo opencv_core opencv_highgui opencv_videoio opencv_imgcodecs)
调用摄像头采集图像
GetVideoFromCam.cxx
#include <opencv2/opencv.hpp> #include <opencv2/imgproc/imgproc.hpp> int main(){ // read video cv::VideoCapture capture(0); // show each frame while(1){ cv::Mat frame, edges; // read current frame; capture >> frame; // convert to gray-scale cv::cvtColor(frame, edges, CV_BGR2GRAY); // denoise cv::blur(edges, edges, cv::Size(7,7)); // canny operator cv::Canny(edges, edges, 0, 30, 3); // show current frame imshow("Read Video", edges); // if input 'e', exit char c = cv::waitKey(30); if (c=='e') { break; } } return 0; }
CMakeList.txt
cmake_minimum_required (VERSION 2.8) project (ReadPlayVideo) # find OpenCV packages find_package( OpenCV REQUIRED ) include_directories( ${OpenCV_INCLUDE_DIRS} ) # add the executable add_executable (ReadPlayVideo ReadPlayVideo.cxx) target_link_libraries(ReadPlayVideo opencv_core opencv_highgui opencv_videoio opencv_imgcodecs opencv_imgproc)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通