opencv —— 基本图形的绘制

线段:line 函数

void line(Mat& img, Point pt1, Point pt2, const Scalar& color, int thickness=1, int lineT ype=8, int shift=0);

  • img: 要绘制线段的图像。
  • pt1: 线段的起点。
  • pt2: 线段的终点。
  • color: 线段的颜色,通过一个 Scalar 对象定义。
  • thickness: 线条的宽度,默认值为 1。
  • lineType: 线段的类型。可以取值 8,4,和CV_AA, 分别代表8邻接连接线,4 邻接连接线和反锯齿连接线。默认值为 8 邻接。为了获得更好地效果可以选用 CV_AA (采用了高斯滤波)。
  • shift: 坐标点小数点位数,默认值 0。
// 绘制线
void DrawLine(Mat img, Point start, Point end){
    int thickness = 2;
    int lineType = 8;
    line(img, start, end, Scalar(0, 0, 0), thickness, lineType);
}

椭圆:ellipse 函数

void ellipse(Mat& img, Point center, Size axes,double angle, double startAngle, double endAngle, const Scalar& color, int thickness=1,int lineType=8, int shift=0);

  • img: 要绘制椭圆的图像。
  • center: 椭圆中心点坐标。
  • axes: 椭圆位于该 Size 决定的矩形内。(即定义长轴和短轴)。
  • angle: 椭圆的角度。
  • startAngle: 椭圆开始绘制时角度。
  • endAngle: 椭圆绘制结束时角度。(若绘制一个完整的椭圆,则startAngle=0, endAngle = 360)。
  • color: 椭圆的颜色。
  • thickness: 绘制椭圆线粗。负数表示全部填充。
  • lineType、shift:同上。
//绘制不同角度。相同尺寸的椭圆
void DrawEllipse(Mat img, double angle){
    int thickness = 2;
    int lineType = 8;
    ellipse(img, Point(wwidth / 2, wwidth / 2),Size(wwidth / 4, wwidth / 16), angle,0, 360, Scalar(255, 129, 0), thickness, lineType);
}

矩形:rectangle 函数

void rectangle(Mat& img, Point pt1, Point pt2, const Scalar& color, int thickness=1, int lineType=8, int shift=0);

  • pt1: 矩形的左上角坐标。
  • pt2: 矩阵的右下角坐标。
  • 其余同上。
    //绘制矩形
    rectangle(rookImage, Point(0, 7 * wwidth),Point(wwidth, wwidth), Scalar(0, 255, 255), -1, 8);

圆:circle 函数

void circle(Mat& img, Point center, int radius, const Scalar& color, int thickness=1, int lineType=8, int shift=0);

  • center: 圆心坐标。
  • radius: 半径。
  • 其余同上。
//绘制实心圆
void DrawFilledCircle(Mat img, Point center){
    int thickness = -1; //线粗
    int lineType = 8;
    circle(img, center, wwidth / 32, Scalar(0, 0, 255),thickness, lineType);
}

填充多边形:fillPoly 函数

void fillPoly(Mat& img, const Point** pts,const int* npts, int ncontours, const Scalar& color, int lineType=8, int shift=0, Point offset=Point() );

  • pts: 多边形定点集。
  • npts: 多边形的顶点数目。
  • ncontours: 要绘制多边形的数量。
  • offset: 所有点轮廓的可选偏移。
  • 其余同上。
//实现凹多边形绘制
void DrawPolygon(Mat img){
    int lineType = 8;

    //创建一些点
    Point rootPoints[1][20];
    rootPoints[0][0] = Point(wwidth / 4, 7 * wwidth / 8);
    rootPoints[0][1] = Point(3 * wwidth / 4, 7 * wwidth / 8);
    rootPoints[0][2] = Point(3 * wwidth / 4, 13 * wwidth / 16);
    rootPoints[0][3] = Point(11 * wwidth / 16, 13 * wwidth / 16);
    rootPoints[0][4] = Point(19 * wwidth / 32, 3 * wwidth / 8);
    rootPoints[0][5] = Point(3 * wwidth / 4, 3 * wwidth / 8);
    rootPoints[0][6] = Point(3 * wwidth / 4, wwidth / 8);
    rootPoints[0][7] = Point(26 * wwidth / 40, wwidth / 8);
    rootPoints[0][8] = Point(26 * wwidth / 40, wwidth / 4);
    rootPoints[0][9] = Point(22 * wwidth / 40, wwidth / 4);
    rootPoints[0][10] = Point(22 * wwidth / 40, wwidth / 8);
    rootPoints[0][11] = Point(18 * wwidth / 40, wwidth / 8);
    rootPoints[0][12] = Point(18 * wwidth / 40, wwidth / 4);
    rootPoints[0][13] = Point(14 * wwidth / 40, wwidth / 4);
    rootPoints[0][14] = Point(14 * wwidth / 40, wwidth / 8);
    rootPoints[0][15] = Point(wwidth / 4, wwidth / 8);
    rootPoints[0][16] = Point(wwidth / 4, 3 * wwidth / 8);
    rootPoints[0][17] = Point(13 * wwidth / 32, 3 * wwidth / 8);
    rootPoints[0][18] = Point(5 * wwidth / 16, 13 * wwidth / 16);
    rootPoints[0][19] = Point(wwidth / 4, 13 * wwidth / 16);
    const Point* ppt[1] = { rootPoints[0] };
    int npt[] = { 20 };
    fillPoly(img, ppt, npt, 1, Scalar(255, 255, 255), lineType);
}

显示文字:PutText 函数

void putText(Mat& img, const string& text, Point org, int fontFace, double fontScale, Scalar color, int thickness=1, int lineType=8, bool bottomLeftOrigin=false )

  • img – 显示文字所在图像.
  • text – 待显示的文字.
  • org – 文字在图像中的左下角 坐标.
  • fontFace – 字体类型, 可选择字体:                                                                                                    FONT_HERSHEY_SIMPLEX,     FONT_HERSHEY_PLAIN,     FONT_HERSHEY_DUPLEX,     FONT_HERSHEY_COMPLEX,                                       FONT_HERSHEY_TRIPLEX,     FONT_HERSHEY_COMPLEX_SMALL,     FONT_HERSHEY_SCRIPT_SIMPLEX,                                         FONT_HERSHEY_SCRIPT_COMPLEX,                                                                                                                              以上所有类型都可以配合FONT_HERSHEY_ITALIC使用,产生斜体效果。
  • fontScale – 字体大小,该值和字体内置大小相乘得到字体大小
  • color – 文本颜色
  • thickness – 写字的线的粗细
  • lineType – 线型.
  • bottomLeftOrigin – false, 图像数据原点在左下角。否则, 图像数据原点在左上角.
 putText(Image, "OpenCv", Point(width / 2, width / 2), FONT_HERSHEY_PLAIN, 1, Scalar(255, 255, 255), 1, 8, false);

借鉴博客:https://www.cnblogs.com/ishero/p/11136315.html

原文地址:https://www.cnblogs.com/bjxqmy/p/12225743.html

时间: 2024-11-09 03:11:33

opencv —— 基本图形的绘制的相关文章

Quartz2D常见图形的绘制:线条、多边形、圆

UI高级 Quartz2D http://ios.itcast.cn  iOS学院 掌握 drawRect:方法的使用 常见图形的绘制:线条.多边形.圆 绘图状态的设置:文字颜色.线宽等 图形上下文状态的保存与恢复(图形上下文栈) 图片裁剪 截图 什么是Quartz2D Quartz 2D是一个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作 Ø绘制图形 : 线条\三角形\矩形\圆\弧等 Ø绘制文字 Ø绘制\生成图片(图像) Ø读取\生成PDF Ø截图\裁剪图片 Ø自定义

ios 基本图形的绘制 基于bitmap 位图

内容包括 图片水印,图片裁剪,屏幕截图,背景平铺 1.图片水印功能 #import "UIImage+MJ.h" @implementation UIImage (MJ) + (instancetype)waterImageWithBg:(NSString *)bg logo:(NSString *)logo { UIImage *bgImage = [UIImage imageNamed:bg]; // 1.创建一个基于位图的上下文(开启一个基于位图的上下文) UIGraphicsB

ios 基本图形的绘制

基本图形的绘制 包括: 代码画线,画文字 图片 裁剪 重绘  简单动画 当自定义view的时候 系统会自动调用drawRect 方法 画线 - (void)drawRect:(CGRect)rect { // Drawing code // 1.获得图形上下文 CGContextRef ctx = UIGraphicsGetCurrentContext(); // 2.拼接图形(路径) // 设置线段宽度 CGContextSetLineWidth(ctx, 10); // 设置线段头尾部的样式

HTML5 Canvas ( 填充图形的绘制 ) closePath, fillStyle, fill

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>canvas</title> <script type="text/javascript" src="../js/jQuery.js"></script> <style type="text/css">

自定义View之绘图篇(一):基础图形的绘制

生活是一面镜子,你对它笑,它就对你笑:你对它哭,它也对你哭.--萨克雷 在正文开始之前,我先抛一个脑洞大开的题目给大家:商人以45元一双进购了2双鞋子,然后亏本30一双出售.某个顾客给了他100买了2双鞋子,商人没零钱找于是拿着这100找邻居换了100的零钱,后来邻居发现这100是假的,商人只得陪了邻居100真的... 请问商人亏了多少?? 相关文章: Android自定义View之Path解析 一.Paint与Canvas 绘图需要两个工具,笔和纸.这里的 Paint相当于笔,而 Canvas

零基础HTML5游戏制作教程 第2章 简单图形的绘制

第二章 简单图形的绘制 HTML5支持使用Canvas和SVG等方式在网页直接绘制图形.其中SVG适合用来绘制高质量的矢量图形,不适合用来做游戏,所以我们做游戏一般使用Canvas. 由于本教程以简单为原则,所以在初学阶段请不要把注意力分散到美工.画质等细节,我们只需要掌握矩形.多边形.圆形等简单图形的绘制,并对这些图形编程,使之具有一定的运动能力和游戏效果. (如果你偷懒,你甚至可以跳过本章中多边形和圆形的绘制,只学矩形,然后直接去看下一章.) 一,矩形的绘制 命令的格式是context.fi

opencv:图形绘制与填充

#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; int main(int argc, char** argv) { Mat canvas = Mat::zeros(Size(512, 512), CV_8UC3); // 相关绘制的API /* line 参数说明: 1. 在哪个图像上绘制 2. 起点 3. 终点 4. 颜色 5. 线宽 6. typ

关于c#winform用sharpGL(OpenGL)绘制不出图形,绘制窗口是个黑框的坑

原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11790309.html 在c++的opengl中可能是因为是最基本的库,很多东西都把你做好了 转到c#下用大牛们对opengl的支持库,比如sharpGL,使用起来需要非常的严谨 就比如: gl.Color(0.0f, 0.0f, 1.0f);这个设置颜色的代码 在c++下不管是0.0f也好还是0也好都可以,而在c#下sharpGL没有写0.0f的这种格式 图像就完全绘制不出来.让你完全找不

OpenCV in QtCreator 简易的OpenCV+Qt 图形框架

2016.10.3 OpenCV in Qt Creator --简易的OpenCV+Qt Creator图形框架 1.如何在Qt Creator中引入OpenCV库 (其实配置完之后感觉很简单,但是配置的时候试了各种方法,真真假假终于试到一个对的) 如下图 代码如下 E:\opencv3.1.0\ //与自己的配置有关 INCLUDEPATH += E:\opencv3.1.0\build\include\opencv2\ INCLUDEPATH += E:\opencv3.1.0\build