(07)绘制形状与文字
/*
*绘制形状与文字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)绘制形状与文字相关推荐
- opencv 叠加文字_opencv3.1学习笔记(8) 绘制形状与文字
绘制形状比较简单,基本上没啥子好说的,见代码. 演示代码:#include #include using namespace std; using namespace cv; Mat bgImage; ...
- OpenCV(C++)---绘制形状与文字
1.使用cv::Point与cv::Scalar Point表示2D平面上一个点(x,y) Point p;p.x = 10;p.y = 8;orp = Pont(10,8); Scalar表示四个元 ...
- opencv学习笔记(八)-- 在图像上绘制形状和文字
文章目录 CV::Point以及CV::Scalar 画直线cv::line() 画椭圆cv::elipse() 画矩形cv::rectangle() 画圆cv::circle() 画填充多边形cv: ...
- 在图像中绘制基本形状和文字
目录 一 基本形状的绘制 二 随机数 三 绘制文字 注:原创不易,转载请务必注明原作者和出处,感谢支持! 一 基本形状的绘制 本文的内容和数字图像处理的关系不大,主要是关于OpenCV提供的在图像中绘 ...
- Java OpenCV 图像处理04.0 图像形状与文字绘制
Java OpenCV 图像处理04.0 图像形状与文字绘制 Github 代碼地址 OpenCV 仿射变换.透视变换.旋转.平移.缩放 序號 名稱 方法 1 圖像 添加文字 Imgproc.putT ...
- OpenCV——Python:像素调整、图片裁剪、形状与文字设置3
像素调整与图片裁剪 import cv2img = cv2.imread("2.jpg") # 读取图像 print(img.shape) # 查看图像长,宽,通道数imgResi ...
- Visio双击形状编辑文字
当使用Visio绘制流程图的时候,怎样设置双击形状时自动进入文本编辑状态呢? 今天遇到的小问题,记录一下解决过程. 打开Visio流程图,选择需要编辑的形状,或按下键盘上的Ctrl+A全选所有形状. ...
- 全国计算机信息高新技术考试第一单元视频,第一单元绘制形状-全国计算机信息高新技术考试.ppt...
第一单元绘制形状-全国计算机信息高新技术考试 劳动和社会保障部全国计算机信息高新技术考试 网页制作模块培训班 Flash 平台 索引 第5单元 制作元件 第6单元 制作动画 第7单元 交互影片 第8单 ...
- Python8-10行代码生成任意形状的文字云图
一年一季的七夕就要到了,是时候展示我们程序猿的神技了! 今天用python3做了一下文字云图,有英文和中文两类.中文云图的生成需要文本切分,所以先给大家介绍中文云图. 大致步骤: 1.安装jieba ...
最新文章
- Linux下如何测试及使用USB转串口线
- Ansible之使用角色一键部署httpd并检查部署结果
- 2015 年你在科研上有哪些值得分享的进展和感悟?
- 4.1.3 文件目录
- 计算机科学NIP,焦点:网络入侵防护(NIP)技术真的成了鸡肋吗? -电脑资料
- java中list、set和map 的区别(转)
- 杨辉三角形(C语言)(使用一维数组的版本)
- CVPR(IEEE Conference on Computer Vision and Pattern Recognition)
- safari里的touch事件解析
- 比char还小的变量
- JetBrains:webstrom中代码模板设置
- [C++]operator难点、豆知识
- GAGE EON采集卡
- PC发卡机器人 v1.0
- 关于Linux下面移动硬盘读不出来
- 信任=自信+他信+信他
- 数据库基本概念、DBMS、DBS
- python 创业_如何在下午使用python和破折号创业
- 函数与事件吧,未整理
- 重启与新生,哪家在线教育的转型最有看点?
热门文章
- ufs2.1 android bench,UFS发力,二代UFS 2.1闪存重磅来袭,安卓苹果差距不再
- 电脑右键打印不见了_求救电脑高手电脑突然出现一个打印机之类的东东后,右键就失常了,原 爱问知识人...
- 如何使用systemctl管理postgres数据库启停
- 计算机网络交换机无法ping,巧妙解决交换机无法ping通的网络疑问 -电脑资料
- Git命令-思维导图
- Python 实例:手机通讯录(使用text文本记录数据)
- 他曾缔造了谷歌无人车 现在创业一年选择和谷歌不同的路 | AI英雄
- eclipse配置tomcat10
- NLP的游戏规则从此改写?从word2vec, ELMo到BERT
- 开启3个线程循环打印10遍ABC-何氏硬刚版+网红版