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();