当前位置: 首页 > news >正文

网站开发最强工具/宽带业务如何推广

网站开发最强工具,宽带业务如何推广,公司网站建设华为,机械设备网站建设一、前言 今天要讲的是绘制功能。 如果想看其他有关于OpenCV学习方法介绍、学习教程、代码实战、常见报错及解决方案等相关内容,可以直接看我的OpenCV分类: 【OpenCV系列】:https://blog.csdn.net/shuiyixin/article/category/7581855 如果…

一、前言

今天要讲的是绘制功能。

如果想看其他有关于OpenCV学习方法介绍、学习教程、代码实战、常见报错及解决方案等相关内容,可以直接看我的OpenCV分类:

【OpenCV系列】:https://blog.csdn.net/shuiyixin/article/category/7581855

如果你想了解更多有关于计算机视觉、OpenCV、机器学习、深度学习等相关技术的内容,想与更多大佬一起沟通,那就扫描下方二维码加入我们吧!

二、cv::Point与cv::Scalar

在讲绘制之前,我们要先说一下点和像素值,因为我们在后面会用到。

1、cv::Point

我们都知道,OpenCV处理的大多数是二维的图像,所以在OpenCV中,Point表示2D平面上一个点(x,y)。给点的横纵坐标赋值方法如下:

第一种方法是分别给横纵坐标赋值:

	Point p;p.x = 10;p.y = 8;

第二种方法是一次性赋值:

        Point p;p = Pont(10,8);

 

2、cv::Scalar

知道了点的位置,我们还要知道点的颜色,在OpenCV中,用cv::Scalar来设置颜色,以后有机会我会给大家详细讲解Scalar,这个时候大家主要就知道是设置颜色就可以啦。

Scalar的定义如下:

typedef struct Scalar
{double val[4];
}Scalar;

Scalar有四个元素,初始化的时候,如果没有赋值,默认为0。

对于前面三个元素,分别表示B,G,R,即blue,green,red。我们一般设置也是设置前面三个值。

例如我们这个博客中用到的例子:

	Scalar color = Scalar(0, 0, 255);

第四个参数没有赋值,默认为0,这个颜色表示纯红色。

三、绘制基本形状

1、绘制直线cv::line

首先我们说最简单的绘制直线。、

1.API

        void line(InputOutputArray img, Point pt1, Point pt2, const Scalar& color,int thickness = 1, int lineType = LINE_8, int shift = 0);

函数参数含义如下:

@param img :输入图像。

@param pt1 :直线的第一个端点。

@param pt2 :直线的第二个端点。

@param color :直线的颜色。

@param thickness :直线的粗细程度。

@param lineType :直线类型,一共有三个:LINE_4,LINE_8,LINE_AA.其中LINE_AA是无锯齿直线。

@param shift :点坐标中的小数位数,一般用默认值。

 

2.代码展示

#include<opencv2/opencv.hpp>
#include<iostream>using namespace std;
using namespace cv;
Mat src1 = imread("E:/image/hand.jpg");void addLine();void main()
{if (!src1.data) {printf("could not load image...\n");return ;}imshow("【input picture】", src1);addLine();waitKey(0);
}
void addLine()
{Point p1 = Point(src1.cols / 2, src1.rows / 2);Point p2;p2.x = 10;p2.y = 10;Scalar color = Scalar(0, 0, 255);line(src1, p1, p2, color, 1, LINE_4);imshow("【addLine】", src1);
}

 

3.执行结果

 

2、绘制矩形cv::rectangle

接下来是绘制矩形,矩形比较简单,需要知道位置和大小,我们用Rect结构来构造一个矩形。

1.API

void rectangle(Mat& img, Rect rec,const Scalar& color, int thickness = 1,int lineType = LINE_8, int shift = 0);

函数参数含义如下:

@param img :输入图像。

@param rec :一个矩形,包含四个参数,横纵坐标以及长宽。

@param color :直线的颜色。

@param thickness :直线的粗细程度。

@param lineType :直线类型,一共有三个:LINE_4,LINE_8,LINE_AA.其中LINE_AA是无锯齿直线。

@param shift :点坐标中的小数位数,一般用默认值。

2.代码展示

#include<opencv2/opencv.hpp>
#include<iostream>using namespace std;
using namespace cv;
Mat src1 = imread("E:/image/hand.jpg");void addRectangle();void main()
{if (!src1.data) {printf("could not load image...\n");return ;}imshow("【input picture】", src1);addRectangle();imshow("【addRectangle】", src1);waitKey(0);
}
void addRectangle()
{Rect rect = Rect(20, 10, 150, 200);Scalar color = Scalar(0, 0, 255);rectangle(src1, rect, color, 1, 4);}

3.执行结果

3、绘制椭圆cv::ellipse

接下来是绘制椭圆。椭圆需要的比较多:

一个是位置(中心);

一个是长轴短轴;

一个是方向,是横着还是竖着还是斜着?

一个是哪个角度开始;

一个是哪个角度结束;(一般这两个为0-360,表示完整的椭圆)

剩下的就是颜色啊,粗细啊,线的类型之类的。

1.API

void ellipse(InputOutputArray img, Point center, Size axes,double angle, double startAngle,double endAngle,const Scalar& color, int thickness = 1,int lineType = LINE_8, int shift = 0);

函数参数含义如下:

@param img :输入图像。

@param center:椭圆中心。

@param axes:轴线。

@param angle:椭圆旋转角度,单位为度。

@param startAngle:椭圆弧的起始角,单位为度。

@param endAngle:椭圆弧的终止角,单位为度。

@param color:椭圆的颜色。

@param thickness:椭圆的粗细程度。

@param lineType :椭圆线类型,一共有三个:LINE_4,LINE_8,LINE_AA.其中LINE_AA是无锯齿直线。

@param shift :点坐标中的小数位数,一般用默认值。

2.代码展示

#include<opencv2/opencv.hpp>
#include<iostream>using namespace std;
using namespace cv;
Mat src1 = imread("E:/image/hand.jpg");void addEllipse();void main()
{if (!src1.data) {printf("could not load image...\n");return ;}imshow("【input picture】", src1);addEllipse();imshow("【addEllipse】", src1);waitKey(0);
}
void addEllipse()
{Point p1 = Point(src1.cols / 2, src1.rows / 2);Size s1 = Size(src1.cols / 4, src1.rows / 4);Scalar color = Scalar(242, 123, 215);ellipse(src1, p1, s1, 40, 0, 360, color, 1, LINE_AA);
}

3.执行结果

4、绘制圆cv::circle

接下来是绘制圆,圆就比较简单啦,只需要知道圆心和半径就好了。

1.API

void circle(InputOutputArray img, Point center, int radius,const Scalar& color, int thickness = 1,int lineType = LINE_8, int shift = 0);

函数参数含义如下:

@param img :输入图像。

@param center:圆心。

@param radius:半径。

@param color :圆的颜色。

@param thickness :圆的粗细程度。

@param lineType :圆线的类型,一共有三个:LINE_4,LINE_8,LINE_AA.其中LINE_AA是无锯齿直线。

@param shift :点坐标中的小数位数,一般用默认值。

2.代码展示

#include<opencv2/opencv.hpp>
#include<iostream>using namespace std;
using namespace cv;
Mat src1 = imread("E:/image/hand.jpg");void addCircle();void main()
{if (!src1.data) {printf("could not load image...\n");return ;}imshow("【input picture】", src1);addCircle();imshow("【addCircle】", src1);waitKey(0);
}
void addCircle()
{Point center = Point( src1.cols/2, src1.rows/2);Scalar color = Scalar(0, 255, 255);circle(src1, center, 50,color, 1, 4);
}

3.执行结果

5、设置填充cv::fillPoly

接下来是设置填充。

1.API

void fillPoly(Mat & img, const Point** pts,const int* npts, int ncontours,const Scalar& color, int lineType = LINE_8, int shift = 0,Point offset = Point() );

函数参数含义如下:

@param img :输入图像。

@param pts :多边形顶点。

@param npts:顶点个数。

@param ncontours:边的个数。

@param color :填充的颜色。

@param lineType :直线类型,一共有三个:LINE_4,LINE_8,LINE_AA.其中LINE_AA是无锯齿直线。

@param shift :点坐标中的小数位数,一般用默认值。

@param offset:轮廓所有点的可选偏移。

2.代码展示

#include<opencv2/opencv.hpp>
#include<iostream>using namespace std;
using namespace cv;
Mat src1 = imread("E:/image/hand.jpg");void addPolygon();void main()
{if (!src1.data) {printf("could not load image...\n");return ;}imshow("【input picture】", src1);addPolygon();imshow("【addPolygon】", src1);waitKey(0);
}
void addPolygon()
{Point pst[1][6];pst[0][0] = Point(100, 100);pst[0][1] = Point(60, 120);pst[0][2] = Point(80, 150);pst[0][3] = Point(120, 150);pst[0][4] = Point(140, 120);pst[0][5] = Point(100, 100);const Point* ppst[] = { pst[0] };int npt[] = { 6 };Scalar color = Scalar(100, 255, 255);fillPoly(src1, ppst, npt,1, color, 4);//图像填充}

3.执行结果

 

6、绘制文字putText

接下来是绘制文字。

1.API

void putText( InputOutputArray img, const String& text, Point org,int fontFace, double fontScale, Scalar color,int thickness = 1, int lineType = LINE_8,bool bottomLeftOrigin = false );

函数参数含义如下:

@param img :输入图像。

@param text:添加的文字。

@param org:图像中文本字符串的左下角。

@param fontFace:文字的字体。

@param color :文字的颜色。

@param thickness :文字的粗细程度。

@param lineType :文字的类型,一共有三个:LINE_4,LINE_8,LINE_AA.其中LINE_AA是无锯齿直线。

@param bottomLeftOrigin:如果为真,则图像数据原点位于左下角。否则,它在左上角。

2.代码展示

#include<opencv2/opencv.hpp>
#include<iostream>using namespace std;
using namespace cv;
Mat src1 = imread("E:/image/Girl.png");void addRectangle();void main()
{if (!src1.data) {printf("could not load image...\n");return ;}imshow("【input picture】", src1);addText();imshow("【addText】", src1);waitKey(0);
}void addText() {Point location = Point(200, src1.rows -10);string text = "Yukee--ZhaoMin";putText(src1, text, location, CV_FONT_BLACK, 2, Scalar(12, 255, 255), 3, 8);}

3.执行结果

好啦今天的内容就讲到这里啦,希望大家能够多多练习,才能真正学懂啊!

http://www.lbrq.cn/news/1263187.html

相关文章:

  • php网站开发都需要什么软件/营销方式有哪几种
  • 网站扁平化布局/郑州网络营销推广
  • 网站目录做301/百度百度一下就知道
  • 做网站用云虚机还是ecs/百度一下百度网站
  • 菏泽网站建设/北京seo结算
  • 衡东网站制作/网站制作企业
  • 易语言怎么做点击按钮打开网站/电脑全自动挂机赚钱
  • 淄博市建设档案馆网站/专业网站建设
  • 沂南做网站/任务放单平台
  • 郑州黑帽seo培训/引擎优化seo是什么
  • 做网站设计的价格/免费建立个人网站申请
  • 个人博客网站注册/中央常委成员名单
  • wordpress换行代码/百度搜索结果优化
  • 临沂专业网站建设公司/广州中小企业seo推广运营
  • 现在疫情可以去广州吗/宁波seo排名外包
  • 中华人民建设部网站/seo网站推广招聘
  • 商业网站需要的/中国疾控卫生应急服装
  • 长春电商网站建设/制作网页的步骤
  • 内容展示类网站/交友平台
  • 天津做网站贵吗/快速网站推广公司
  • 中企动力做网站好吗/自己建网站流程
  • 建设一个网站需要多少钱/店铺推广软文范例
  • 网上做网站兼职/昆明网络营销
  • 黑群辉做web下载网站/进一步优化落实
  • 榆林国贸网站建设/百度搜索风云榜下载
  • 企业登记代理公司/网站seo推广方案
  • 建网站的大公司/汕头企业网络推广
  • 广州建外贸网站公司简介/谷歌官网登录入口
  • 高效的网站建设/网络软文营销案例3篇
  • 成都网站建设益友网络/网站优化排名服务
  • Spring Boot + ShardingSphere 分库分表实战
  • 机器学习——决策树(DecisionTree)+ 过采样 + 交叉验证 案例:电信客户流失数据
  • Navicat连接远程服务器上的mysql
  • 每日五个pyecharts可视化图表-bars(2)
  • NCV8402ASTT1G自保护N沟道功率MOSFET安森美/ONSEMI 过流过温保护汽车级驱动NCV8402ASTT1
  • CommonJS和ES6 Modules区别