绘制点和圆

void cvCircle( CvArr* img, CvPoint center, int radius, CvScalar color,int thickness=1, int line_type=8, int shift=0 );
  • img:图像。
  • center:圆心坐标。
  • radius:圆形的半径。
  • color:线条的颜色。
  • thickness:如果是正数,表示组成圆的线条的粗细程度。否则,表示圆是否被填充。
  • line_type:线条的类型。见 cvLine 的描述
  • shift:圆心坐标点和半径值的小数点位数。

画圆画点都是使用circle()函数来画,点就是圆,我们平常所说的圆只不过是半径大一点而已。

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>using namespace std;
using namespace cv;//画圆画点都是使用circle()函数来画,点就是圆,我们平常所说的圆只不过是半径大一点而已。
int main()
{Mat img = imread("lol16.jpg");  //画空心点Point p(20, 20);//初始化点坐标为(20,20)circle(img, p, 2, Scalar(0, 255, 0)); //第三个参数表示点的半径,第四个参数选择颜色。这样子我们就画出了绿色的空心点//这种初始化点的方式也可以Point p2;p2.x = 100;p2.y = 100;//画实心点circle(img, p2, 3,Scalar(255,0,0),-1); //第五个参数我设为-1,表明这是个实点。//画空心圆Point p3(300, 300);circle(img,p3,100,Scalar(0,0,255),3);//第五个参数我们调高点,让线更粗//画实心圆Point p4;p4.x = 600;p4.y = 600;circle(img, p4, 100, Scalar(120, 120, 120), - 1);imshow("画点画圆", img);waitKey();return 0;
}

绘制椭圆

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:轴的长度。
  • angle:偏转的角度。
  • start_angle:圆弧起始角的角度。
  • end_angle:圆弧终结角的角度。
  • color:线条的颜色。
  • thickness:线条的粗细程度。
  • line_type:线条的类型,见CVLINE的描述。
  • shift:圆心坐标点和数轴的精度。
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>using namespace std;
using namespace cv;int main()
{Mat img = imread("lol16.jpg");  int thickness = 3;int lineType = 8;double angle = 30;  //椭圆旋转角度//第三个参数Size中的两个参数分别是横轴长、纵轴长。//同理,thickness若是小于0,表示实心ellipse(img,Point(100, 100),Size(90, 60),angle,0,360,Scalar(255, 255, 0),thickness,lineType);imshow("画椭圆", img);waitKey();return 0;
}

绘制矩形

 void rectangle(Mat& img,Rect rec, const Scalar&color, intthickness=1, intlineType=8,intshift=0 )
  • img:图像。
  • rec:表征矩形的位置和长宽。
  • color:线条颜色 (RGB) 或亮度(灰度图像 )(grayscale image)。
  • thickness:组成矩形的线条的粗细程度。取负值时(如CV_FILLED)函数绘制填充了色彩的矩形。
  • line_type:线条的类型。见cvLine的描述
  • shift:坐标点的小数点位数。
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>using namespace std;
using namespace cv;int main()
{Mat img = imread("lol16.jpg");  Rect r(250, 250, 120, 200);rectangle(img, r, Scalar(0, 255, 255), 3);imshow("画矩形", img);waitKey();return 0;
}

绘制直线

void line(InputOutputArray img, Point pt1, Point pt2, const Scalar& color,int thickness = 1, int lineType = LINE_8, int shift = 0);
  • img:图像.
  • pt1:线条起点.
  • pt2:线条终点.
  • color:线条颜色.
  • thickness:线条宽度.
  • lineType:线型
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>using namespace std;
using namespace cv;int main()
{Mat img = imread("lol16.jpg");  Point p1(100, 100);Point p2(758, 50);line(img, p1, p2, Scalar(33, 33, 133), 2);//画第二条线line(img, Point(300, 300), Point(758, 300), Scalar(89, 90, 90), 3);imshow("画矩形", img);waitKey();return 0;
}

最后来个综合的图形展示。

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>using namespace std;
using namespace cv;int main()
{Mat img = Mat::zeros(Size(800,600), CV_8UC3);img.setTo(255);Point p1(100, 100);Point p2(758, 50);line(img, p1, p2, Scalar(0, 0, 255), 2);line(img, Point(300, 300), Point(758, 400), Scalar(0, 255, 255), 3);Point p(20, 20);//初始化点坐标为(20,20)circle(img, p, 2, Scalar(0, 255, 0),-1);Point p4;p4.x = 600;p4.y = 600;circle(img, p4, 100, Scalar(120, 120, 120), -1);int thickness = 3;int lineType = 8;double angle = 30;  //椭圆旋转角度ellipse(img, Point(100, 100), Size(90, 60), angle, 0, 360, Scalar(255, 255, 0), thickness, lineType);Rect r(250, 250, 120, 200);rectangle(img, r, Scalar(0, 255, 255), 3);imshow("大杂烩", img);waitKey();return 0;
}

OpenCV精进之路(零):core组件——绘制点、直线、几何图形相关推荐

  1. OpenCV精进之路(十六):图像分解和融合技术——图像拼接和图像融合技术

    图像拼接在实际的应用场景很广,比如无人机航拍,遥感图像等等,图像拼接是进一步做图像理解基础步骤,拼接效果的好坏直接影响接下来的工作,所以一个好的图像拼接算法非常重要. 再举一个身边的例子吧,你用你的手 ...

  2. OpenCV精进之路(零):core组件——Mat和IplImage访问像素的方法总结

    在opencv的编程中,遍历访问图像元素是经常遇到的操作,掌握其方法非常重要,无论是Mat类的像素访问,还是IplImage结构体的访问的方法,都必须扎实掌握,毕竟,图像处理本质上就是对像素的各种操作 ...

  3. OpenCV精进之路(零):HighGUI——读写XML和YML文件

    前言 有时候我们处理完图像后需要保存一下数据到文件上,以供下一步的处理.一个比较广泛的需求场景就是:我们对一幅图像进行特征提取之后,需要把特征点信息保存到文件上,以供后面的机器学习分类操作.那么如果遇 ...

  4. OpenCV精进之路(零):访问图像中像素的三种方法

    访问像素的三种方法 指针访问:最快 迭代器iterator:较慢,非常安全,指针访问可能出现越界问题 动态地址计算:更慢,通过at()实现.适用于访问具体某个第i行,j列的像素,而不适用遍历像素 这里 ...

  5. OpenCV精进之路(十三):角点检测

    角点检测是计算机视觉系统中用来获取图像特征的一种方法.我们都常说,这幅图像很有特点,但是一问他到底有哪些特点,或者这幅图有哪些特征可以让你一下子就识别出该物体,你可能就说不出来了.其实说图像的特征,你 ...

  6. python 图像无缝拼接,OpenCV Python 系列教程3 - Core 组件

    基本知识 灰度图像的存储方式: image 多通道图像存储方式 image OpenCV 中的通道存储为 BGR 像素值的存储方式 RGB 模式,显示设备采用这种模式 HSV.HLS 将颜色分解成色调 ...

  7. OpenCV精进之路(八):图像轮廓和图像分割修复——轮廓查询和多边形包围轮廓

    Canny一类的边缘检测算法可以根据像素之间的差异,检测出轮廓边界的像素,但它没有将轮廓作为一个整体.所以要将轮廓提起出来,就必须将这些边缘像素组装成轮廓. OpenCV中有一个很强大的函数,它可以从 ...

  8. OpenCV精进之路(九):图像轮廓和图像分割修复——图像修复技术

    在实际应用中,我们的图像常常会被噪声腐蚀,这些噪声或是镜头上的灰尘或水滴,或是旧照片的划痕,或者是图像遭到人为的涂画(比如马赛克)或者图像的部分本身已经损坏.如果我们想让这些受到破坏的额图片尽可能恢复 ...

  9. OpenCV精进之路(十):直方图匹配——模板匹配

    模板匹配的作用在图像识别领域作用可大了.那什么是模板匹配? 模板匹配,就是在一幅图像中寻找另一幅模板图像最匹配(也就是最相似)的部分的技术. 说的有点抽象,下面给个例子说明就很明白了. 在上面这幅全明 ...

最新文章

  1. 博威特瞄准数据备份市场
  2. 波士顿大学数学与计算机科学,2021战报 | 美国波士顿大学金融数学硕士录取
  3. 构建安全的Xml Web Service系列之初探使用Soap头
  4. 一文了解JDK12 13 14 GC调优秘籍-附PDF下载
  5. eclipse/myeclipse中如何开启断言调试代码
  6. CDMA的完整形式是什么?
  7. [react] 自定义组件时render是可选的吗?为什么?
  8. python如何运行py程序_如何用Python汇款:Web3.py教程
  9. 哈佛大学单细胞课程|笔记汇总 (六)
  10. 计算机系统结构课程所设计总结,高级计算机系统结构-课程总结(13页)-原创力文档...
  11. Go语言中的复合类型及面向对象思想
  12. docker深入2-API示例
  13. (三)云计算技术学习--OpenStack之KeyStone
  14. Ubuntu下安装使用Monaco字体
  15. JavaScript介绍及视频教程
  16. keytool密钥和证书管理工具-使用详解(整理)
  17. Spring学习:通过黎活明视频1
  18. 关于目标文件系统,文件过大的解决方法
  19. 文献html阅读器,强烈推荐文献阅读器CAJviewer——大学生阅读文献、论文必备工具!!!...
  20. java aes iv_java AES加密解密

热门文章

  1. GreenDao2.2升级GreenDao3.0的适配之路
  2. ios view 切上部分圆角_唯一可行的 iOS 架构
  3. 织梦php me,GitHub - czmz/DedeCMSv5: 中国专业的PHP网站内容管理系统-织梦内容管理系统...
  4. fx-1s可以用c语言,AX-1S 系列微型可编程控制器100兼容三菱FX-1S系列PLC)
  5. 【C#】图片处理(底片,黑白,锐化,柔化,浮雕,雾化)
  6. android canvas帧动画,html5视频,canvas,画布
  7. js高级编号笔记[新]-访问文档对象
  8. mysql数据库复制数据表时的风险
  9. web python template injection_XCTF Web_python_template_injection
  10. python numpy读取数据_Python数据分析之numpy学习(一)