艺术线条和填充多边形

画直线或者其他图形(虚线,圆,矩形等)的函数都接受宽度(thickenss)和线性(lineType)的参数,这两个都是整型的,但第二个参数的值只能是4,8或者cv::LINE__AA。thickness参数是指线宽的像素数,对于圆,矩形,和其他封闭图形,thickenss可以设置为cv::FULLD,这个图形就会被用和边界一样的颜色填充满。
lineType参数表示直线是“四邻域连接”还是“八邻域连接”或者是平滑处理。

  1. cv::circle();画一个简单的圆
  2. cv::clipLine();判断一条直线是否在邻域内
  3. cv::ellipse();画一个椭圆(可以倾斜,或者只有部分圆弧)
  4. cv::ellipse2Poly();计算一个近似椭圆的多边形
  5. cv::fillConvexPoly();画一个填充的简单多边形
  6. cv::fillPoly();画一个填充的任意多边形
  7. cv::line();画一个简单直线
  8. cv::rectangle();画一个简单矩形
  9. cv::polyLines();画多重折线

cv::circle()画圆函数

 circle(cv::Mat& img,  //输入图像cv::Point   center, //输入圆心int           radius,  //半径const cv::Scalar& color, //线条颜色int         thickness = 1,  //线宽int            lineType = 8,   //线型int            shift = 0    //圆心坐标点和半径值的小数位数);

下面代码在一幅我们定义的图片上绘制了一个圆;

#include "pch.h"
#include <iostream>
#include <opencv2/opencv.hpp>using namespace std;
using namespace cv;#define WINDOW_NAME  "绘图"
#define WINDOW_WIDTH  300  //定义图像大小的宏int main()
{Mat img = Mat::zeros(WINDOW_WIDTH, WINDOW_WIDTH,CV_8UC3);Point2i pt(100,100);circle(img,pt , 50, Scalar(255, 0, 0));imshow("WINDOW_NAME", img);waitKey();return 0;
}

cv::ellipse()画椭圆函数

cv::line()画直线

该函数在图像img上绘制一条从pt1到pt2的直线,直线自动被图像边缘截断;

 line(cv::Mat  img,   //输入图像cv::Point  pt1,  //起点cv::Point  pt2,   //终点const cv::Scalar&  color,  //颜色int    lineType = 8,   //线型int    shift = 0   //起点终点的小数位数);

cv::rectangle()

该函数有两种使用方法,一种传入矩形的两个相对的角点坐标,另一种是传入一个矩形Rect类;

 rectangle(cv::Mat   img,cv::Point  pt1,cv::Point  pt2,const cv::Scalar&  color,int       lineType = 8,int        shift = 0);rectangle(cv::Mat   img,cv::Rect  r,const cv::Scalar&  color,int       lineType = 8,int        shift = 0);

下面我们在之前画圆的函数里再加点东西:

 Point2i pt1(50, 50);   //矩形角点1Point2i pt2(100, 100);  //矩形角点2Rect r(10, 10, 70, 70);  //定义一个矩形rectangle(img, pt1, pt2, Scalar(0, 0, 255));rectangle(img, r, Scalar(0, 255, 0));

字体和文字

我们很自然的有另外一种需求,我们可以在图片上绘制矩形,那我们也想可以给图片加一些类似字幕的文字。这就是cv::putText()函数

putText(img, "zhouxuan", pt1, FONT_HERSHEY_SIMPLEX,1.0,Scalar(255,255,0));//  输入图像        左下标     字形            大小   颜色字形标识符:
FONT_HERSHEY_COMPLEX_SMALL;  //小号版本的FONT_HERSHEY_COMPLEX
FONT_HERSHEY_SIMPLEX;        //手写体
FONT_HERSHEY_DUPLEX;         //普通大小无衬线字体,比 FONT_HERSHEY_SCRIPT_SIMPLEX 更复杂
FONT_HERSHEY_COMPLEX;        //普通大小无衬线字体,比FONT_HERSHEY_DUPLEX 更复杂
FONT_HERSHEY_TRIPLEX;        //普通大小无衬线字体,比FONT_HERSHEY_SCRIPT_COMPLEX 更复杂
FONT_HERSHEY_SCRIPT_COMPLEX; //比FONT_HERSHEY_SCRIPT_SIMPLEX更复杂的变体
FONT_HERSHEY_PLAIN;          //小号无衬线字体
FONT_HERSHEY_SCRIPT_SIMPLEX;  //普通大小无衬线字体

opencv学习笔记七:绘图和注释相关推荐

  1. OpenCV学习笔记(七)——图像梯度及边缘检测

    图像梯度计算的是图像变化的速度.对于图像的边缘部分,其灰度值变化较大,梯度值也较大:相反,对于图像中比较平滑的部分,其灰度值变化较小,相应的梯度值也较小.一般情况下,图像梯度计算的是图像的边缘信息. ...

  2. Opencv学习笔记七(梯度算子、锐化)

    Sobel算子 卷积的作用除了实现图像模糊或者去噪,还可以寻找一张图像上所有梯度信息,这些梯度信息是图像的最原始特征数据,进一步处理之后就可以生成一些比较高级.抽象的特征用来表示一张图像实现基于图像特 ...

  3. OpenCV学习笔记七-创建滑动条

    摘要:主要记录滑动条函数使用方法 创建滑动条函数: C++: int createTrackbar(const string& trackbarname, const string& ...

  4. OpenCV学习笔记:绘图指令(矩形、圆、线、文本标注)

    环境:CentOS7 g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16) $ pkg-config --modversion opencv 2.4.13 效果图(前 ...

  5. opencv计算图像亮度调节_【opencv学习笔记七】访问图像中的像素与图像亮度对比度调整...

    今天我们来看一下如何访问图像的像素,以及如何改变图像的亮度与对比度. 在之前我们先来看一下图像矩阵数据的排列方式.我们以一个简单的矩阵来说明: 对单通道图像排列如下: 对于双通道图像排列如下: 那么对 ...

  6. 分水岭算法java,OpenCV 学习笔记 04 深度估计与分割——GrabCut算法与分水岭算法...

    1 使用普通摄像头进行深度估计 1.1 深度估计原理 这里会用到几何学中的极几何(Epipolar Geometry),它属于立体视觉(stereo vision)几何学,立体视觉是计算机视觉的一个分 ...

  7. Opencv学习笔记(八) -- 图像色彩空间转换

    1.常见图像色彩空间 RGB RGB色彩模式是工业界的一种颜色标准,是通过对红(R).绿(G).蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红.绿.蓝三个通道 ...

  8. OpenCV学习笔记与代码示例(三):张氏标定法标定相机原理及函数详解

    目录 1.张氏标定法基本原理 1.1相机针孔模型 1.2单应矩阵H 1.3求相机内参 1.4求相机外参 1.5优化参数 1.6总结 2.OpenCV实现 2.1特征点检测与靶标坐标初始化 2.2相机标 ...

  9. OpenCV学习笔记(二十一)——绘图函数core OpenCV学习笔记(二十二)——粒子滤波跟踪方法 OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt OpenCV学习笔记(二十

    OpenCV学习笔记(二十一)--绘图函数core 在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数.OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的.这里就介绍一下相关 ...

最新文章

  1. 想知道垃圾回收暂停的过程中发生了什么吗?查查垃圾回收日志就知道了!
  2. 2021年开源SLAM算法集锦
  3. key php 转小写_PHP代码层防护与绕过
  4. MongoDB和MySQL的区别
  5. SGU495 Kids and Prizes 概率DP,期望公式
  6. java某个时间推迟60天_java计算两个时间相差(天、小时、分钟、秒)
  7. InkImageDataSetGenerator-开源一个可用于机器学习的书写轨迹图片生成的小工具
  8. javascript的id、class、元素选择器
  9. (转)Arcgis for JS实现台风运动路径与影像范围的显示
  10. Winform文件下载之WebClient
  11. 对训练样本分布不均的思考
  12. C语言有哪些冷知识?
  13. cad2017单段线_cad2017新功能介绍
  14. MATLAB算法实战应用案例精讲-【人工智能】枝晶生长模型(附matlab代码实现)
  15. 制作适应手机网页、平板电脑(iPad)、电脑网页的三种方法
  16. php hook类,基于 CodeIgniter 构建 JWT RESTfull API Server
  17. ME54N 采购申请审批
  18. threeJS 创建地月系
  19. (附源码)基于springboot的物流配货管理系统的设计与实现 毕业设计 250858
  20. Java基础:泛型的使用

热门文章

  1. python 修饰器
  2. 1. Android逆向-Frida环境搭建
  3. java提供图片链接,提取网页图片链接的JAVA程序
  4. brvah树状结构默认展开第一个_BRVAH官方使用指南(持续更新)
  5. python可视化图表插件_组件化可视化图表 - Recharts
  6. sass的一些小点点
  7. c语言复杂类型作函数,C语言基础-复杂数据类型
  8. wiremock最基本的使用
  9. 微信小程序之绝对路径、相对路径、返回到某个页面 抛弃../../
  10. StackEdit Windows本地服务器搭建