之前有个需求,要为图片中几个不规则区域添加半透明的颜色,在网上搜了半天才找到需要的接口。要完成这个目标可以分为两步:填充和半透明处理:
填充的函数接口为fillPoly:
void fillPoly(InputOutputArray img, InputArrayOfArrays pts, const Scalar& color, int lineType=LINE_8, int shift=0, Point offset=Point() )
半透明处理的函数接口为addWeighted:
void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype=-1)
先上代码:
#include <opencv2/opencv.hpp>
#include<stdio.h>
#include <string>
using namespace cv;
Mat src;
Mat dst;
int main()
{
namedWindow("src", WINDOW_AUTOSIZE);//WINDOW_AUTOSIZE:系统默认,显示自适应
src = imread("0.jpg", 1);//1:为原图颜色,0:为灰度图,黑白颜色
src.copyTo(dst);
cv::Point pt[1][5];
pt[0][0] = cv::Poi