正所谓有屏幕的地方就有bad apple 既然学了opencv ,那怎么能浪费这一技能呢
下面是代码
#include "opencv2/opencv.hpp" #include "iostream" using namespace cv; using namespace std; int main() { VideoCapture cap; //创建存储视频文件或者设备的对象 cap.open("bad apple.mp4"); //双引号中是视频名称,视频得放在当前目录 Mat frame;//定义一个Mat 变量,用于存储每一帧的图像 int k = -1; vector<vector<Point>> g_vContours; vector<Vec4i> g_vHierarchy; while (1) { cap >> frame; //若视频播放完成,退出循环 if (frame.empty()) { break; } //图片处理 cvtColor(frame, frame, COLOR_BGR2GRAY);//转换成灰度图 threshold(frame, frame, 170, 255, CV_THRESH_BINARY);//图像二值化 //blur(frame, frame, Size(3,3));//均值滤波 Canny(frame, frame, 3,9,3);//运行Canny算子检测边缘 findContours(frame,g_vContours,g_vHierarchy,RETR_TREE,CHAIN_APPROX_SIMPLE);//寻找轮廓 Mat dst; dst.create(frame.size(), frame.type());//创建于frame同类型和大小的矩阵dst dst = Scalar::all(255);//将dst内所有元素设置为255 drawContours(dst, g_vContours,-1,Scalar(0),2);//绘制轮廓 imshow("bad apple", dst);//显示当前帧 k = waitKey(30);//延时30ms if (k == 27) break; //按下退出键:Esc } return 0; }