用opencv對bad apple進行輪廓提取並播放

正所謂有屏幕的地方就有bad apple
既然學了opencv ,那怎麼能浪費這一技能呢

視頻鏈接:https://www.bilibili.com/video/av69821573/
下面是代碼

#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;
}

注:視頻的聲音我是用手機播放的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章