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、對視頻抽幀處理後保存
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();