手把手讲解opencvpython基本的几何图形绘画和文字输出
△ 效果图all:
图1:原创,代码是:all.py
图2:原创,代码是:girl_all.py
备注:图2的美女图片,来自今日头条正版免费图库。
△ 内容概述:
1 具体讲解opencv-python的图形绘画:直线,圆形,三角形,,正方形和五角星。
2 文字输出,暂时不讲解中文,下次有空专门讲解中文。
3 相关知识,在注释中,基本上是手把手讲解,注释详细,一秒就懂。
△ 基本知识:创建图像容器
1 代码:import numpy as np import cv2 #画板底色是黑色 #opencv-python 创建图像容器 dtype=np.uint8 #因为数据类型为 np.uint8,也就是0~255 #img = np.zeros((512,512,3), np.uint8) #未注明dtype,容易溢出,造成图像不显示 #img = np.zeros((512,512,3)) #黑色背景 img = np.ones((512,512,3)) #白色背景 cv2.imshow("1_huabandise",img) cv2.waitKey()
2 省略。
△ 直线:
1 代码:import numpy as np import cv2 #黑色底色,大小512和512 img = np.zeros((512,512,3), np.uint8) #黑色底板 #画斜直线,从坐标点0,0到512,512,蓝色,粗细=5 cv2.line(img,(0,0),(512,512),(255,0,0),5) #水平线,左到右,红色 cv2.line(img,(0,200),(512,200),(0,0,255),5) cv2.imshow("2_line",img) cv2.waitKey()
2 图:
△ 三角形:
1 代码:import cv2 import numpy as np #img = np.ones((512,512,3)) #白色背景 #黑色底色,大小512和512 img = np.zeros((512,512,3), np.uint8) #画三角形,三个点依次坐标 pts = np.array([[50, 200], [450, 200],[250,400]]) #polylines多边形函数 cv2.polylines(img, [pts], True, (255, 255, 0), 15) cv2.imshow("3_triangle", img) cv2.waitKey(0) cv2.destroyAllWindows()
2 图:
△ 正方形:
1 代码:#2种方法画正方形:rectangle import numpy as np import cv2 #黑色背景 img = np.zeros((512,512,3), np.uint8) #左上角,红色 cv2.rectangle(img,(0,0),(128,128),(0,0,255),3) #右上角,正方形左侧上顶点和右下顶点坐标,,绿色 cv2.rectangle(img,(384,0),(512,128),(0,255,0),3) #左上角正方形,蓝色 cv2.rectangle(img,(0,384),(128,512),(255,0,0),3) #右下角正方形,蓝色 cv2.rectangle(img,(384,384),(512,512),(255,255,255),3) #polylines多边形画法 pts = np.array([[226,226],[286,226],[286,286],[226,286]]) pts = pts.reshape((-1,1,2)) cv2.polylines(img,[pts],True,(0,0,255),3) cv2.imshow("4_rectangle",img) cv2.waitKey()
2 图:
△ 圆形:
1 代码:import numpy as np import cv2 # Create a black image img = np.zeros((512,512,3), np.uint8) #r=63,红色,-1为实心圆 cv2.circle(img,(447,63), 63, (0,0,255), -1) #r=60,绿色,1为空心圆 cv2.circle(img,(256,256), 60, (0,255,0), 1) #r=80 cv2.circle(img,(256,256), 80, (0,255,0), 1) #r=100 cv2.circle(img,(256,256), 100, (0,255,0), 1) cv2.imshow("5_circle",img) cv2.waitKey()
2 图:
△ 五角星:
1 代码:#五角星:pentagram=five-point star import cv2 import numpy as np img = np.zeros((512,512,3)) #黑色背景 #五角星,注意中括号,好几个 pts = np.array([[50, 190], [380, 420], [255, 50], [120, 420], [450, 190]]) cv2.polylines(img, [pts], True, (255, 255, 0), 15) cv2.imshow("8_pentagram", img) cv2.waitKey(0) cv2.destroyAllWindows()
2 图:
回到首页的两张图:原创图1和图2。
图一代码:#all import cv2 import numpy as np #备注1200为高,2000为宽 img = np.zeros((1200,2000,3)) #黑色背景 #img = np.ones((512,512,3)) #白色背景,大小512和512 #第1个:五角星 pts = np.array([[50, 190], [380, 420], [255, 50], [120, 420], [450, 190]]) cv2.polylines(img, [pts], True, (255, 255, 0), 5) #第2个,正方形:左侧上顶点和右下顶点坐标,绿色 cv2.rectangle(img,(500,100),(800,400),(0,255,0),5) #第3个:圆形,r=200,黄色,1为空心圆 cv2.circle(img,(1100,300), 200, (0,255,255), 5) #第4个:三角形,蓝色 pts = np.array([[1400, 200], [1850, 200],[1650,400]]) cv2.polylines(img, [pts], True, (255, 0, 0), 5) #第5个:水平线,左到右,红色 cv2.line(img,(0,600),(2000,600),(0,0,255),20) #第6个:文字输出,暂时不支持中文 text = "Opencv-Python" font = cv2.FONT_HERSHEY_SIMPLEX linetype = cv2.LINE_AA cv2.putText(img,text, (100,1000) , font, 7, (255,255,255) ,10,linetype) cv2.imshow("all", img) cv2.waitKey(0) cv2.destroyAllWindows()
图二:
就是使用一张彩色图片作为画布和底板,那么图片的原来大小就是决定画布大小,所以相关参数需要修改。
故意放出来,就是熟悉,加深和巩固上述图形的坐标和画法。
代码:import cv2 import numpy as np #读取图片 img = cv2.imread("/home/xgj/Desktop/graph_cv2/girl.jpeg",1) #原图:彩色 #查看图片大小 #print(img.shape) #(814, 1200, 3) #第1个:五角星 pts = np.array([[50, 190], [380, 420], [255, 50], [120, 420], [450, 190]]) cv2.polylines(img, [pts], True, (255, 255, 0), 5) #第2个,正方形:左侧上顶点和右下顶点坐标,绿色 cv2.rectangle(img,(500,100),(800,400),(0,255,0),5) #第3个:圆形,r=200,黄色,1为空心圆 cv2.circle(img,(1000,300), 100, (0,255,255), 5) #第4个:三角形,蓝色 pts = np.array([[600, 500], [1050, 500],[850,700]]) cv2.polylines(img, [pts], True, (255, 0, 0), 5) #第5个:水平线,左到右,红色 cv2.line(img,(0,750),(1200,750),(0,0,255),20) #第6个:文字输出,暂时不支持中文 text = "Opencv-Python" font = cv2.FONT_HERSHEY_SIMPLEX linetype = cv2.LINE_AA cv2.putText(img,text, (100,100) , font, 4, (255,255,255) ,10,linetype) cv2.imshow("girl_all", img) cv2.waitKey(0) cv2.destroyAllWindows()
△ 结束语:
讲解非常详细,一文就搞懂python的opencv的常见的几何图形画法和文字输出。
下次有空讲解,中文输出的方法。
出轨女人的忏悔从亮亮的车子上下来,她匆匆整理了一下头发,一路小跑到院子里,突然,她不敢往前走了,是他,她的老公,消瘦的身形,夜色下更是消瘦,老公看到她开始往家里走,两人无话,走到门口老公拿出钥匙
遇见这种家长,老师该怎么办?昨天在外面无意之中听见两个年轻家长在聊天,聊到家庭吃穿问题,那是没有一点舍不得花钱的。但是关于学习,还有老师的问题,那就哼哼了。其中一个家长提起他孩子时,说前年有次孩子老师让买模拟
孩子越早读幼儿园越好吗?三岁去幼儿园怎么就晚了?今天一个关系不错的朋友和我视频闲聊,聊到孩子读幼儿园的问题,她的几句话让人听了极度不舒服,有心怼回去吧,我又碍于面子忍了。截取关于我俩聊的孩子读幼儿园的一段话,这其中没有删减增加任
多点耐心给老人吧今天发生了一件让我内心比较波澜的一件事。孩子爷爷最近住在我们这,由于担心他整天睡觉或坐楼下不走动对身体不利,也想方便他出去买点他自己喜欢吃的水果蔬菜和零食,我们不定时给他钱让他买点
柳传志我是如何克服焦虑的在1月11日君联资本企业发展研究院二期班毕业仪式上,联想控股董事长柳传志分享了他思考问题以及克服焦虑的办法。柳传志说,他感到焦虑的时候,就一个人静思,把到底焦虑的是什么东西弄清楚。
媳妇分娩全家开心等待,宝宝出生后家人懵了,医生也傻眼了董女士从结婚到现在已经快有三年的时间了,最近的各种症状都表明董女士肚子里面有了一个小宝宝,董女士的婆婆以及家里的所有人都对董女士的关心非常大。在董女士怀孕以后,去医院做孕检每一次都
二胎我生了一个儿子,可出产房看到婆婆一家人的表现,我后悔了丽丽的婆婆是一个非常重男轻女的人,同时丽丽在和老公结婚后一年多时间就生下了一个女儿。虽说丽丽的女儿非常的懂事,可是丽丽的婆婆却一直揪着这个事情不放,说是丽丽没能给家里生一个儿子,女
二胎我生了一个儿子,可出产房看到婆婆一家人的表现,我后悔了丽丽的婆婆是一个非常重男轻女的人,同时丽丽在和老公结婚后一年多时间就生下了一个女儿。虽说丽丽的女儿非常的懂事,可是丽丽的婆婆却一直揪着这个事情不放,说是丽丽没能给家里生一个儿子,女
44岁宝妈有了两个儿子却又拼三胎,孩子出生后,全家人却哭成一团44岁的李姐现如今已经拥有了两个儿子了,对此李姐的大儿子现在已经在读大二了,但对于李姐来说,一直以来的梦想就是非常的希望自己可以有一个女儿那就美满了。每当李姐在刷朋友圈看到自己的朋
二胎宝妈产下儿子,全家人都只盯着小宝,4岁女儿发现妈妈不对劲娟娟今年也是28岁的人了,并且她和自己的丈夫也领证将近五年时间了,娟娟一胎女儿如今也有了4岁了。但就因为娟娟没能给婆家生下一个儿子,所以这几年时间婆婆都没正眼看过她,可自打二胎政策
如何成为商人04交易成本(购中)谈判为什么总是要拖很久?上一讲,我们讲到,买家在购买一件商品之前,因为对商品并不了解(也就是信息不对称),对卖家也并不信任(也就是信用不传递),所以,需要四处搜寻,多方比较,一些重要的商品甚至还要反复测试