API简介

//基础数据结构
//点
Point p1=Point(100,100)
Point p2; p2.x = 200; p2.y = 300;//矩阵
Rect rect = Rect(200,100,300,300);
//起点x,y,长300,宽300//颜色向量
Scalar color = Scalar(0,0,255);//画线
line(bgImage,p1,p2,color,1,LINE_8);
//背景图片,起点,终点,颜色向量,线条粗细,线条类型
//线条类型:LINE_8(八邻接),LINE_4(四邻接),LINE_AA(抗锯齿)//画矩阵
rectangle(baImage,rect,color,2,LINE_8);
//背景图片,矩阵,颜色向量,线条粗细,线条类型//画椭圆
eclipse(bgImage,Point(bgImage.cols/2,bgImage.rows/2),Size(bgImage.cols/4,bgImage.rows/8),90,0,360,color,2,LINE_8 )
//背景图片,圆心,长短半径,开始画的角度,终止的角度,颜色向量,粗细,线条类型//画圆
Point center = Point(bgImage.cols,bgImage.rows);
circle(bgImage,center,150,color,2,8);
//背景图片,圆心,半径, 颜色向量, 线条类型//创建一系列点
Point pts[1][5];
pts[0][0] = Point(10,10);
pts[0][1] = Point(10,100);
pts[0][2] = Point(100,100);
pts[0][3] = Point(100,10);
pts[0][4] = Point(10,10);const Point* ppts[] = { pts[0] };
int npt[] = { 5 };
Scalar color = Scalar(255,12,255);fillPoly(bgImage,ppts,npt,1,color,8);
//根据点来填充其围成的图形putText(bgImage,"Hello OpenCV!",Point(300,300),CV_FONT_HERSHEY_COMPLEX,2.0,Scalar(12,255,200),1,8);
//背景图片,文字,左上角点,字符,大小,颜色向量,粗细,线条类型

四邻接、八邻接和抗锯齿

抗锯齿:在绘制完线之后,使用高斯滤波来去除锯齿。

代码实践

#include <iostream>
#include <opencv2/opencv.hpp>using namespace cv;
using namespace std;void MyLines();
void MyRectangle();
void MyEllipse();
void MyCircle();
void MyPolygon();Mat src;
int main(int argc, char* argv[])
{src = imread("src.jpg");if (src.empty()){cout << "could not open image ..." << endl;return -1;}MyLines();MyRectangle();MyEllipse();MyCircle();MyPolygon();imshow("test", src);waitKey(0);return 0;
}void MyLines()
{Point p1 = Point(50, 50);Point p2; p2.x = 300; p2.y = 300;Scalar colors = Scalar(0, 0, 255);line(src, p1, p2, colors, 2, LINE_8);
}void MyRectangle()
{Rect rec = Rect(100, 100, 300, 300);Scalar colors = Scalar(0, 0, 255);rectangle(src, rec, colors, 4, LINE_4);
}void MyEllipse()
{Point center = Point(src.cols / 2,src.rows / 2);Scalar colors = Scalar(0, 125, 255);ellipse(src, center, Size(src.cols / 3, src.rows / 3), 45, 0, 270, colors, 3, LINE_AA);
}void MyCircle()
{Point center = Point(src.cols / 2,src.rows / 2);Scalar colors = Scalar(125, 125, 155);circle(src, center, 100, 2, 8);
}void MyPolygon()
{Point pts[1][5];pts[0][0] = Point(10, 10);pts[0][1] = Point(10, 100);pts[0][2] = Point(100, 100);pts[0][3] = Point(100, 10);pts[0][4] = Point(10, 10);const Point* ppts[] = { pts[0] };int npt[] = { 5 };Scalar color = Scalar(255, 12, 255);fillPoly(src, ppts, npt, 1, color, 8);
}

OpenCV学习:基础图像操作 (四):绘制几何图形相关推荐

  1. OpenCV学习笔记(十四):重映射:remap( )

    OpenCV学习笔记(十四):重映射:remap( ) 图像的坐标映射是通过原图像与目标图像之间建立一种映射关系,这种映射关系有两种,一种是计算原图像任意像素在映射后图像的坐标位置,另一种是计算变换后 ...

  2. opencv学习---计算图像的水平积分投影和垂直积分投影

    opencv学习---计算图像的水平积分投影和垂直积分投影 标签: opencv水平积分投影垂直积分投影 2016-12-07 18:48 1806人阅读 评论(1) 收藏 举报 分类: opencv ...

  3. OpenCV学习笔记(5)_ ellipse绘制函数浅析

    OpenCV学习笔记(5)_ ellipse绘制函数浅析 文章目录 OpenCV学习笔记(5)_ ellipse绘制函数浅析 1. ellipse第一种重载--绘制椭圆弧 1.1 函数原型 1.2 参 ...

  4. python+OpenCv笔记(二):绘制几何图形

    一.绘制直线 cv.line(img,pt1,pt2,color,thickness,lineType) 参数: img:要绘制的图像 pt1 pt2:绘制的起点与终点 color:颜色 thickn ...

  5. OpenCV学习(2)——图像的数据格式BGR

    OpenCV学习(2)--图像的BGR格式解读 1. opencv读取的图片数据格式 2. BGR含义 1. opencv读取的图片数据格式 opencv读取的图片数据格式为numpy的nparray ...

  6. OpenCV学习笔记11_Mask操作与图像叠加

    一.掩膜操作Mask 在opencv功能(两点): 1. 逻辑运算模板mask: 可以理解为一个字帖模板, 能描的地方就看成是一个Mask, 后续的处理只针对这个Mask来操作 例如: inline ...

  7. 【OpenCV 学习笔记】第四章: 色彩空间类型转换

    第四章: 色彩空间类型转换 为什么有色彩空间这个概念? 世界本是无颜色的,我们人类看到的各种有色光只是特定波长的电磁波能够刺激人眼的锥体细胞,进而在人脑中形成颜色信号而已,实际上电磁波的波长域是非常广 ...

  8. 【opencv学习】图像特征检测

    import cv2 import numpy as np import matplotlib.pyplot as plt# 什么是特征? # 当你看到芒果图像时,如何识别它是芒果? # 通过分析颜色 ...

  9. Opencv学习笔记——图像基本操作

    文章目录 前言 一.数据读取-图像 1.读取图像 2.读取部分图像 二.数据读取-视频 三.颜色通道提取 四.边界填充 五.数值计算 六.图像融合 前言 先说一些图像的基本知识: (1)图像由像素构成 ...

最新文章

  1. GNU make manual 翻译( 一百四十九)
  2. JVM中强引用,弱引用,软引用和幽灵引用的代码
  3. bash中通过设置PS1变量改变提示符颜色
  4. 第十一周项目实践1 图基本算法库
  5. android项目 之 记事本(6)----- 加入手写
  6. list ilist java_C#中IList与List区别
  7. pc控制iphone的软件_iPhone照片视频传输及HEIC照片转档
  8. Ngrok让你的本地Web应用暴露在公网上
  9. linux初学者-软件安装与管理篇
  10. 算法笔记-------快速排序
  11. 【优化求解】基于matlab蚁群算法的函数优化分析【含Matlab源码 219期】
  12. UDS诊断系列之一 汽车诊断简介
  13. python中nums[:]和nums
  14. 厉害了,苹果承认故意让旧 iPhone 变慢!
  15. whith ~ as 用法
  16. 配置MAWEN环境变量,总是出错
  17. spring-scop (单例模式?)
  18. 微信小程序 判断身份证号码正确(封装成公共方法并使用)
  19. Qt(C++)中如何连接sqlite3数据库及如何使用
  20. 苹果电脑IOS ssh远程关机

热门文章

  1. C++ LeetCode简单程序:罗马数字转整数
  2. 关于实习和秋招的准备
  3. 在计算机的游戏怎样打开,电脑上那个吃鸡游戏怎么打开 | 手游网游页游攻略大全...
  4. 怎么制作搞笑的GIF
  5. Leetcode刷题100天—3. 无重复字符的最长子串(滑动窗口+集合+双指针)—day21
  6. Windows每五秒点击一次键盘保持不锁屏
  7. keras学习之:获取神经网络中间层的输出结果
  8. AngularJS中的谷歌地图开发
  9. 嵌入式linux下复位声卡驱动
  10. Android基础架构:Native层 Looper、Handler、Message 研究