OpenCV解析視頻圖片

1、準備工作

添加OpenCV庫後,包含頭文件

#include “opencv2/imgproc/imgproc_c.h” 
#include "opencv2/opencv.hpp"  
using namespace cv;

2、讀取圖片文件並顯示

//讀取圖片 
Mat img = imread(sPath); 
 
//在圖片上畫矩形   
rectangle(img,Point(0,0),Point(100,100),Scalar(0,255,0),2,1);  

//參數:圖片,矩形某頂點,矩形某頂點對角線點,RGB顏色, 
//線條厚度(負數表示畫矩形色塊),線條類型,點座標值小數點位數(默認爲0) 
 
//線條類型 
enum LineTypes{ 
FILLED = -1, 
LINE_4 =  4, 
LINE_8 = 8, 
LINE_AA = 16//反鋸齒 
}

//在圖片上畫矩形塊
rectangle(img,Point(0,0),Point(100,100),Scalar(0,255,0),-1,1);  

//顯示圖片 
imshow("WindowName",img); 

3、對視頻抽幀處理後保存

Opencv圖像加水印

VideoCapture cap;//打開默認攝像頭 VideoCapture cap(0)
cap.open(sPath);  
Mat img;  
Mat imgLogo = imread("./WaterMark.png"); 
Mat imgMask = imread("./WaterMark.png",0); 
int iWidth = cap.get(CAP_PROP_FRAME_WIDTH); 
int iheight = cap.get(CAP_PROP_FRAME_HEIGHT); 
double dFPS = cap.get(CAP_PROP_FPS); 
 
VideoWrite vw; 
vw.open("./Current.mp4",VideoWrite::fourcc('D','I','V','x'),fps,Size(iWidth,iHeight),true); 

while(cap.read(img)) 
{ 
	if(img.empty()) 
	{ 
 		return;
 	}
	 
	//圖片加水印begin
	resize(imgLogo,imgLogo,Size(40,40)); 
	resize(imgMask ,imgMask ,Size(40,40)); 
 	Mat imgROI = img(Rect(img.cols - imgLogo.cols - 10,imgLogo.cols,imgLogo,rows)); 
 	imgLogo.copyTo(imgROI,imgMask); 
 	//圖片加水印over 
 	
    imshow("WindowName",image);
    waitKey(); 
 	vw.write(img);

} 
 
 cap.release(); 
 vw.release(); 

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