/*
*绘制形状与文字cv::Point数据结构:代表了一个点的坐标,一个二维点的坐标Point表示2D平面上一个点x, yPoint p;p.x = 10;p.y = 8;orp = Point(10, 8);cv::Scalar数据结构:代表颜色的向量,RGB色彩空间经常是数有三个值或者灰度图像赋给一个值Scalar表示四个元素的向量,基类是Vec向量这个类总共有四个元素构造函数的可以声明一个,两个,三个, 四个都可以,不能超过四个,零个也可以,然后再给它赋值也可以Scalar(a, b, c); a = blue, b = green, c = red 表示RGB三个通道绘制线、矩形、圆、椭圆等基本几何图形画线cv::line (LINE_4\LINE_8\LINE_AA) 有一个参数是linetype 就是绘制线的类型 其中类型LINE_AA表示反锯齿 就是绘制线和几何形状的圆、椭圆等画椭圆cv::ellipse画矩形cv::rectangle画圆cv::circle画填充cv::fillPoly随机生成线与绘制文本
*/#include <opencv2\opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;//定义全局变量
Mat bgImage;
const char* drawdemo_win = "drawdemo window";//定义一个方法,函数声明
void MyLine(); //画一条线
void MyRectangle();//画一个矩形
void MyEllipse(); //绘制一个椭圆
void MyCircle(); //画一个圆
void MyPolygen(); //多边形的填充功能
void RandomLineDemo(); //画一个随机的线int main(int argc, char** argv)
{bgImage = imread("D:/A_Graduation/picture/Fusion/source17_1.tif");if (!bgImage.data){printf("Could not load image src1...\n");return -1;}//函数调用MyLine();MyRectangle();MyEllipse();MyCircle();MyPolygen();//RandomLineDemo();//                                 字的位置            字体类型         字体大小              字体线的厚度putText(bgImage, "Hello OpenCV", Point(30, 30), CV_FONT_HERSHEY_COMPLEX, 1.0, Scalar(0, 0, 255), 3, 8);char input_win[] = "input image"; namedWindow(input_win, CV_WINDOW_AUTOSIZE);imshow(input_win, bgImage);waitKey(0);return 0;
}//函数实现
void MyLine()
{Point p1 = Point(20, 30);Point p2;p2.x = 300;p2.y = 300;Scalar color = Scalar(0, 0, 255); //红色line(bgImage, p1, p2, color, 2, LINE_AA); //thickness越大线越宽,lineType默认是8即LINE_8
}void MyRectangle()
{Rect rect = Rect(20, 10, 30, 30); //参数分别表示起始位置、宽、高Scalar color = Scalar(255, 0, 0); //蓝色rectangle(bgImage, rect, color, 3); //参数分别表示背景图像,矩形,颜色,线宽,线的类型默认是LINE_8
}void MyEllipse()
{Scalar color = Scalar(0, 255, 0);ellipse(bgImage, Point(bgImage.cols / 2, bgImage.rows / 2), Size(bgImage.cols/4, bgImage.rows/8), 90, 0, 360, color, 2, LINE_8); //参数分别表示背景图像, 椭圆的中心,椭圆的半径,椭圆的长轴和短轴,椭圆的倾斜程度,椭圆的起始角度、终止角度、椭圆线的颜色、线的宽度,线的类型
}void MyCircle()
{Scalar color = Scalar(0, 255, 255);Point center = Point(bgImage.cols / 2, bgImage.rows / 2); //圆心的位置circle(bgImage, center, 20, color, 2, 8); //参数分别表示背景图像,圆心位置,半径长度,线的颜色,线宽,线的类型
}void MyPolygen()
{//声明多边形的点的坐标,声明一个二维的,fillploy接收的是一个二维的指针Point pts[1][5];pts[0][0] = Point(100, 100);pts[0][1] = Point(100, 200);pts[0][2] = Point(200, 200);pts[0][3] = Point(200, 100);pts[0][4] = Point(100, 100);const Point* ppts[1] = { pts[0] };int npt[] = { 5 };fillPoly(bgImage, ppts, npt, 1, Scalar(0, 255, 255), 8);//ppts:折线中拐点坐标指针;npt:折线拐点个数指针;1:就画一个,对应pts的1//这里有一篇我觉得解释的挺好的博客 http://blog.csdn.net/yinkailin/article/details/12406975
}void RandomLineDemo()
{Mat bg = Mat::zeros(bgImage.size(), bgImage.type());//学习随机数这个类生成随机数,生成随机的颜色//首先要有一个随机数生成的种子RNG rng(12345);//生成线的位置,定义两个点Point pt1, pt2;for (int i = 0; i < 100000; i++){pt1.x = rng.uniform(0, bgImage.cols); //生成一个uniform的随机数,不要超过背景图的范围pt1.y = rng.uniform(0, bgImage.rows);pt2.x = rng.uniform(0, bgImage.cols);pt2.y = rng.uniform(0, bgImage.rows);Scalar color = Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255)); //生成随机颜色,随机数在0-255之间line(bg, pt1, pt2, color, 1, 8);namedWindow("RandomLine Window", CV_WINDOW_AUTOSIZE);imshow("RandomLine Window", bg);if (waitKey(50) > 0) //50毫秒绘制一次{break;}/*waitKey(x);参数x: 等待x ms,如果在此期间有按键按下,则立即结束并返回按下按键的ASCII码,否则返回-1如果x=0,那么无限等待下去,直到有按键按下*/}
}

(07)绘制形状与文字相关推荐

  1. opencv 叠加文字_opencv3.1学习笔记(8) 绘制形状与文字

    绘制形状比较简单,基本上没啥子好说的,见代码. 演示代码:#include #include using namespace std; using namespace cv; Mat bgImage; ...

  2. OpenCV(C++)---绘制形状与文字

    1.使用cv::Point与cv::Scalar Point表示2D平面上一个点(x,y) Point p;p.x = 10;p.y = 8;orp = Pont(10,8); Scalar表示四个元 ...

  3. opencv学习笔记(八)-- 在图像上绘制形状和文字

    文章目录 CV::Point以及CV::Scalar 画直线cv::line() 画椭圆cv::elipse() 画矩形cv::rectangle() 画圆cv::circle() 画填充多边形cv: ...

  4. 在图像中绘制基本形状和文字

    目录 一 基本形状的绘制 二 随机数 三 绘制文字 注:原创不易,转载请务必注明原作者和出处,感谢支持! 一 基本形状的绘制 本文的内容和数字图像处理的关系不大,主要是关于OpenCV提供的在图像中绘 ...

  5. Java OpenCV 图像处理04.0 图像形状与文字绘制

    Java OpenCV 图像处理04.0 图像形状与文字绘制 Github 代碼地址 OpenCV 仿射变换.透视变换.旋转.平移.缩放 序號 名稱 方法 1 圖像 添加文字 Imgproc.putT ...

  6. OpenCV——Python:像素调整、图片裁剪、形状与文字设置3

    像素调整与图片裁剪 import cv2img = cv2.imread("2.jpg") # 读取图像 print(img.shape) # 查看图像长,宽,通道数imgResi ...

  7. Visio双击形状编辑文字

    当使用Visio绘制流程图的时候,怎样设置双击形状时自动进入文本编辑状态呢? 今天遇到的小问题,记录一下解决过程. 打开Visio流程图,选择需要编辑的形状,或按下键盘上的Ctrl+A全选所有形状. ...

  8. 全国计算机信息高新技术考试第一单元视频,第一单元绘制形状-全国计算机信息高新技术考试.ppt...

    第一单元绘制形状-全国计算机信息高新技术考试 劳动和社会保障部全国计算机信息高新技术考试 网页制作模块培训班 Flash 平台 索引 第5单元 制作元件 第6单元 制作动画 第7单元 交互影片 第8单 ...

  9. Python8-10行代码生成任意形状的文字云图

    一年一季的七夕就要到了,是时候展示我们程序猿的神技了! 今天用python3做了一下文字云图,有英文和中文两类.中文云图的生成需要文本切分,所以先给大家介绍中文云图. 大致步骤: 1.安装jieba ...

最新文章

  1. Linux下如何测试及使用USB转串口线
  2. Ansible之使用角色一键部署httpd并检查部署结果
  3. 2015 年你在科研上有哪些值得分享的进展和感悟?
  4. 4.1.3 文件目录
  5. 计算机科学NIP,焦点:网络入侵防护(NIP)技术真的成了鸡肋吗? -电脑资料
  6. java中list、set和map 的区别(转)
  7. 杨辉三角形(C语言)(使用一维数组的版本)
  8. CVPR(IEEE Conference on Computer Vision and Pattern Recognition)
  9. safari里的touch事件解析
  10. 比char还小的变量
  11. JetBrains:webstrom中代码模板设置
  12. [C++]operator难点、豆知识
  13. GAGE EON采集卡
  14. PC发卡机器人 v1.0
  15. 关于Linux下面移动硬盘读不出来
  16. 信任=自信+他信+信他
  17. 数据库基本概念、DBMS、DBS
  18. python 创业_如何在下午使用python和破折号创业
  19. 函数与事件吧,未整理
  20. 重启与新生,哪家在线教育的转型最有看点?

热门文章

  1. ufs2.1 android bench,UFS发力,二代UFS 2.1闪存重磅来袭,安卓苹果差距不再
  2. 电脑右键打印不见了_求救电脑高手电脑突然出现一个打印机之类的东东后,右键就失常了,原 爱问知识人...
  3. 如何使用systemctl管理postgres数据库启停
  4. 计算机网络交换机无法ping,巧妙解决交换机无法ping通的网络疑问 -电脑资料
  5. Git命令-思维导图
  6. Python 实例:手机通讯录(使用text文本记录数据)
  7. 他曾缔造了谷歌无人车 现在创业一年选择和谷歌不同的路 | AI英雄
  8. eclipse配置tomcat10
  9. NLP的游戏规则从此改写?从word2vec, ELMo到BERT
  10. 开启3个线程循环打印10遍ABC-何氏硬刚版+网红版