opencv实战从0到N (4)—— 图像加框,画图形及文字

知识共享许可协议 版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

opencv实战从0到N (4)—— 图像加框,画图形及文字

给图像附加额外边框或掩膜,画图形及文字

1,附加额外边框(常在卷积中使用)

函数:copyMakeBorder( src, dst, top, bottom, left, right, borderType, value );

参数:

src: 原图像

dst: 目标图像

top, bottom, left, right: 各边界的宽度,此处定义为原图像尺寸的5%。

borderType: 边界类型,此处可以选择常数边界或者复制边界。

value: 如果 borderType 类型是 BORDER_CONSTANT, 该值用来填充边界像素。

2,与加框对应的是附加0掩膜

Result.row(0).setTo(Scalar(0)); // 上边界

Result.row(Result.rows-1).setTo(Scalar(0)); // 下边界

Result.col(0).setTo(Scalar(0)); // 左边界

Result.col(Result.cols-1).setTo(Scalar(0)); // 右边界

3,画图形及文字

图形函数:

Point 在图像中定义 2D 点

函数 line() 绘 直线

函数 ellipse() 绘 椭圆

函数 rectangle() 绘 矩形

函数 circle() 绘 圆

函数 fillPoly() 绘 填充的多边形

文字函数:

putText( image, "Testing text ", org, rng.uniform(0,8),

rng.uniform(0,100)*0.05+0.1, randomColor(rng), rng.uniform(1, 10), lineType);

例子中:

在 image 上绘制文字 “Testing text ” 。

文字的左下角将用点 org 指定。

字体参数是用一个在 之间的整数来定义。

字体的缩放比例是用表达式 rng.uniform(0, 100)x0.05 + 0.1 指定(表示它的范围是 )。

字体的颜色是随机的 (记为 randomColor(rng))。

字体的粗细范围是从 1 到 10, 表示为 rng.uniform(1,10) 。

4,测试:

Scalar value;

RNG rng(12345);



void main()

{

    Mat src, dst;



    /// 装载图像

    src = imread("2.jpg");

    imshow("src", src);



    putText(src,"opencv goes from 0 to N",Point(80,80),1,1.5,Scalar(0,255,0),1,8);

    rectangle(src,Rect(10,10,50,50), Scalar(0, 255, 0), 1, 8);

    int top = (int)(0.05*src.rows),bottom = (int)(0.05*src.rows);

    int left = (int)(0.05*src.cols),right = (int)(0.05*src.cols);

    dst = src;

    value = Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));

    copyMakeBorder(src, dst, top, bottom, left, right, BORDER_CONSTANT, value);



    imshow("dst", dst);



    waitKey(0);

}

5,结果:

猜你喜欢

转载自blog.csdn.net/qq_34106574/article/details/93770938