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

湖南建设信誉查询网站广告公司

湖南建设信誉查询网站,广告公司,安康网站建设公司价格,html5餐饮美食订餐微官网wap手机网站模板整站下载OpenCV入门(四)快速学会OpenCV3画基本图形 1.画点 在OpenCV中,点分为2D平面中的点和3D平面中的点,区别就是3D中点多了一个z坐标。我们首先介绍2D中的点,坐标为整数的点可以直接用(x, y)代替,其中x是横坐标…

OpenCV入门(四)快速学会OpenCV3画基本图形

1.画点

在OpenCV中,点分为2D平面中的点和3D平面中的点,区别就是3D中点多了一个z坐标。我们首先介绍2D中的点,坐标为整数的点可以直接用(x, y)代替,其中x是横坐标、y是纵坐标。

比如定义一个点:

     pt=(100,200) #横坐标x=100,纵坐标y=200

画图时如果需要用到点,就可以直接用(x,y)作为参数代入。

比如有一个点的列表:

    # 要画的点的坐标points_list = [(160, 160), (136, 160), (150, 200), (200, 180), (120, 150), (145,
180)]

2.画矩形

全局函数rectangle用来通过对角线上的两个顶点绘制矩形,函数声明如下:

     cv.rectangle(img, pt1, pt2, color[, thickness[, lineType[, shift]]] ) cv.rectangle(img, rec, color[, thickness[, lineType[, shift]]] ) 

其中,参数
img表示矩形所在的图像;
pt1表示矩形的一个顶点;
pt2表示矩形对角线上的另一个顶点;
color表示线条颜色(BGR)或亮度(灰度图像,grayscale image);
thickness表示组成矩形的线条的粗细程度,取负值时(如CV_FILLED)函数绘制填充了色彩的矩形;line_type表示线条的类型;shift表示坐标点的小数点位数。

     import cv2 as cvimg = cv.imread("test.jpg")img1=cv.rectangle(img,(10,10),(30,40),(255,0,0),2)cv.imwrite("res.jpg",img1)#保存图片cv.imshow("res", img1)cv.waitKey(0)

在上述代码中,我们首先读取test.jpg,然后调用画矩形函数rectangle绘制一个矩形,其中点(10,10)是左上角顶点、点(30,40)是右下角顶点。颜色值是(255,0,0),是BGR形式,即蓝色分量值是255,因此显示的是蓝色。组成矩形的线条的粗细值是2。

画完后,我们保存到同目录下的res.jpg文件。

运行工程,结果如图所示。可以看到,窗口左上角的地方有一个蓝色边框的矩形。

****

3.画圆

全局函数circle用来绘制或填充一个给定圆心和半径的圆,函数声明如下:

     cv.circle(img, center, radius, color[, thickness[, lineType[, shift]]])

其中,参数
img表示输入的图像(圆画在这个图像上);
center表示圆心坐标;radius表示圆的半径;
color表示圆的颜色,是BGR形式,例如蓝色为Scalar(255,0,0);
thickness如果是正数就表示组成圆的线条的粗细程度,否则表示圆是否被填充;
lineType表示线的类型;
shift表示圆心坐标点和半径值的小数点位数。

import numpy as np
import cv2 as cvimg = cv.imread("test.jpg")
point_size = 10
point_color = (0, 0, 255) # BGR
thickness = -1  # 要画的点的坐标
points_list = [(16, 16),  (35, 40) ]for point in points_list:cv.circle(img, point, point_size, point_color, thickness)thickness = 4# 画圆,圆心为:(60, 60),半径为:60,颜色为:point_color,实心线
cv.circle(img, (60, 60), 60, point_color, 0)cv.namedWindow("image")
cv.imshow('image', img)
cv.waitKey (10000) # 显示 10000 ms 即 10s 后消失
cv.destroyAllWindows()

首先读取图片test.jpg,然后在for循环中,第一次画实心圆(thickness是-1),第二次画空心圆(thickness是4),并且组成圆的线条的粗细程度是4。接着画一个半径是60的圆。

所有圆都是在图片test.jpg上画的。

运行工程,结果如图所示。

在这里插入图片描述

4.画椭圆

函数ellipse用来绘制或者填充一个简单的椭圆弧或椭圆扇形。圆弧被ROI矩形所忽略,反走样弧线和粗弧线使用线性分段近似值,所有的角都以角度的形式给定。

该函数声明如下:

    Ellipse(img, center, axes, angle, start_angle, end_angle, color, thickness=1,
lineType=8, shift=0) 

其中,参数
img表示输入的图像(圆画在这个图像上);
center表示椭圆圆心坐标;
axes表示轴的长度;
angle表示偏转的角度;
start_angle表示圆弧起始角的角度;
end_angle表示圆弧终结角的角度;
color表示线条的颜色;
thickness表示线条的粗细程度;
line_type表示线条的类型;
shift表示圆心坐标点和数轴的精度。

下面看一个实例,绘制丰田车标。丰田车标是由3个椭圆组成的:两个横着,一个竖着。

import numpy as np
import cv2 as cvimg = cv.imread("test.jpg")
points_list = [ (45, 45),  (45, 45),(45, 32) ]
size_list = [ (40, 25),  (25, 11),(28, 12) ]
color = (0, 0, 255) # BGR#绘制第一个椭圆,大椭圆,颜色为红色
cv.ellipse(img, points_list[0],size_list[0], 0, 0, 360, color, 5, 8);
#绘制第二个椭圆,竖椭圆	
cv.ellipse(img,points_list[1], size_list[1], 90, 0, 360, color, 5, 8);
#绘制第三个椭圆,小椭圆(横)	
cv.ellipse(img, points_list[2],size_list[2], 0, 0, 360, color, 5, 8);	
cv.imshow("丰田", img);
cv.waitKey (10000) # 显示 10000 ms 即 10s 后消失

代码很简单,调用ellipse函数画3个椭圆。

运行工程,结果如图所示。
在这里插入图片描述

画圆和画椭圆的联合作战:

import numpy as np
import cv2 as cvWINDOW_WIDTH=200    #定义窗口大小def DrawFi1ledCirc1e(img,center ):thickness = -1lineType = 8color = (0, 0, 255) # BGRcv.circle(img, center,  WINDOW_WIDTH//32, color, thickness, lineType)def DrawEllipse(  img,   angle):thickness = 2;lineType = 8;color = (255, 129, 0) # BGRpt=(WINDOW_WIDTH // 2, WINDOW_WIDTH // 2)size = (WINDOW_WIDTH // 4, WINDOW_WIDTH // 16)cv.ellipse(img, pt,size, angle, 0, 360,color,thickness, lineType)h=WINDOW_WIDTH
w=WINDOW_WIDTH
atomImage=np.zeros((h, w, 3), np.int8)rookImage=np.zeros((h, w, 3), np.int8)
#绘制椭圆
DrawEllipse(atomImage, 90);
DrawEllipse(atomImage, 0);
DrawEllipse(atomImage, 45);
DrawEllipse(atomImage, -45);#绘制圆心
DrawFi1ledCirc1e(atomImage,(WINDOW_WIDTH // 2,WINDOW_WIDTH // 2));cv.imshow("result", atomImage);
cv.waitKey(0);

代码很简单,画了4个椭圆和一个实心圆,实心圆画在所有椭圆的圆心,也就是圆和4个椭圆的圆心是重合的。运行工程,结果如图所示。
在这里插入图片描述

5.画线段

在OpenCV中,函数line用来实现画线段,函数声明如下:

    line(img, pt1, pt2, color[, thickness[, lineType[, shift]]])

其中,参数
img表示输入的图像(圆画在这个图像上);
pt1表示线段的起始点;
pt2表示线段的结束点;
color表示线段颜色;
thickness表示线段粗细;
lineType表示线段类型;
shift表示点坐标中的小数位数。

6.画多边形

在OpenCV中,函数polylines用来画多边形,函数声明如下:

     polylines(img, pts, isClosed, color[, thickness[, lineType[, shift]]])

其中,参数
img表示输入的图像;
pts表示多边形点集;
isClosed表示绘制的多段线是否闭合,如果是闭合的,那么函数将从每条曲线的最后一个顶点到其第一个顶点绘制一条直线;
color表示多边形颜色;
thickness表示多段线边的厚度;
lineType表示线段类型;
shift表示点坐标中的小数位数。

画一个多边形:

import cv2
import numpy as npimg = cv2.imread("test.jpg")
Pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
cv2.polylines(img,[Pts],True,(0,0,255),2)
cv2.imshow("res", img); 
cv2.waitKey(0);

首先读取test.jpg,然后定义一个点集数组Pts,接着调用polylines绘制多边形,最后显示出来。
在这里插入图片描述

7.填充多边形

在OpenCV中,除了绘制多边形之外,还可以填充多边形。函数fillPoly用来填充多边形,函数声明如下:

     fillPoly(img, pts, color[, lineType[, shift[, offset]]])

其中,参数
img表示输入的图像;
pts表示多边形点集;
color表示多边形颜色;
lineType表示线段类型;
shift表示点坐标中的小数位数;
offset表示等高线所有点的偏移。

import numpy as np
import cv2 as cva = cv.imread("test.jpg")
triangle = np.array([ [10,30], [40,80], [10,90] ], np.int32)
cv.fillPoly(a, [triangle],(255,0,0))
cv.imshow("result", a)
cv.waitKey(0)

代码中,“[10,30],[40,80],[10,90]”为要填充的轮廓坐标,通过函数fillPoly填充多边形,填充的颜色是蓝色。

如图所示:
在这里插入图片描述

http://www.mmbaike.com/news/54882.html

相关文章:

  • 企业如何注册自己的网站兰州seo优化
  • 小型购物网站模板直通车推广技巧
  • ps做网站导航营销策划公司经营范围
  • wordpress主题阿里百上海优化营商环境
  • 做电脑网站与手机上的一样吗怎么样进行网络推广
  • 网站有没有做301百度推广开户代理
  • p2p网站制作郑州搜索引擎优化的概念
  • 用腾讯云做网站网络营销策划书模板
  • 做网站的 深圳百度推广怎么登陆
  • pc端微信端网站建设临沂百度推广多少钱
  • 临沧网站建设大数据分析营销平台
  • 河东做网站5000元网站seo推广
  • 工业设计网站设计世界杯竞猜
  • 房地产最新消息房价会涨吗重庆二级站seo整站优化排名
  • ssh做电商 网站中国新闻发布
  • app取代网站百度官网首页入口
  • 成都网站制作公司dedecms百度app下载安装
  • 网站是否必须做认证网页设计模板免费网站
  • 欧卡乐网站建设seo推广培训资料
  • 帝国cms 调用网站名称成都十大营销策划公司
  • 做订阅号要建立网站吗北京疫情最新情况
  • 网页网站怎么做的吗工具大全
  • 公司网站域名cn和com视频广告接单平台
  • 华为官方商城网站建设方案广西seo快速排名
  • 企业网站开发知名品牌有哪些南京百度推广优化排名
  • 中国建设银行官网网站首页短视频seo推广
  • 杭州临平网站建设seo课程排行榜
  • 丹东市住房和城乡建设委员会网站百度贴吧官网首页
  • 黑河企业网站建设公司深圳全网信息流推广公司
  • 长沙专业网站建设运营佛山优化网站关键词