绘图

#绘图
#创建一个图片
img=np.zeros((512,512,3),np.uint8)
#画直线:图像,起点,终点,线条颜色,线条类型
cv2.line(img,(20,20),(500,500),(255,255,0),1)
#画矩形:图像,左上角坐标,右下角坐标,线条颜色,线条类型
cv2.rectangle(img,(280,0),(450,128),(0,255,0),3)
#画圆:图像,中心点坐标,半径大小,线条颜色,线条类型=1时,表示填充
cv2.circle(img,(355,60),55,(255,0,255),-1)
#画椭圆:图像,中心点坐标,(长轴距离,短轴距离),椭圆沿逆时针方向旋转的角度,椭圆弧沿顺时针方向起始的角度和结束的角度,线条颜色,线条类型
cv2.ellipse(img,(256,256),(150,50),0,0,180,(0,255,0),-1)
#画多边形,这里画一个黄色的具有5个顶点的多边形
pts=np.array([[30,60],[80,90],[110,160],[150,310],[180,290]],np.int32)#将各个点的坐标记录下来,数据类型一定要为int32
pts=pts.reshape((-1,1,2))#矩阵重组,1在哪里,表示这一维的长度是由为1的维度确定的,(1,-1)表示行,(-1,1)表示列
cv2.polylines(img,[pts],True,(0,255,255))#画很多条线,参数:图像,矩阵,第三个如果是False,我们得到的图像不是闭合的,线条颜色
#在图片上添加文字
font=cv2.FONT_HERSHEY_SIMPLEX
'''
其中字体可以选择
FONT_HERSHEY_SIMPLEX
Python: cv.FONT_HERSHEY_SIMPLEX
normal size sans-serif fontFONT_HERSHEY_PLAIN
Python: cv.FONT_HERSHEY_PLAIN
small size sans-serif fontFONT_HERSHEY_DUPLEX
Python: cv.FONT_HERSHEY_DUPLEX
normal size sans-serif font (more complex than FONT_HERSHEY_SIMPLEX)FONT_HERSHEY_COMPLEX
Python: cv.FONT_HERSHEY_COMPLEX
normal size serif fontFONT_HERSHEY_TRIPLEX
Python: cv.FONT_HERSHEY_TRIPLEX
normal size serif font (more complex than FONT_HERSHEY_COMPLEX)FONT_HERSHEY_COMPLEX_SMALL
Python: cv.FONT_HERSHEY_COMPLEX_SMALL
smaller version of FONT_HERSHEY_COMPLEXFONT_HERSHEY_SCRIPT_SIMPLEX
Python: cv.FONT_HERSHEY_SCRIPT_SIMPLEX
hand-writing style fontFONT_HERSHEY_SCRIPT_COMPLEX
Python: cv.FONT_HERSHEY_SCRIPT_COMPLEX
more complex variant of FONT_HERSHEY_SCRIPT_SIMPLEXFONT_ITALIC
Python: cv.FONT_ITALIC
flag for italic font
'''
cv2.putText(img,'opencv',(20,500),font,4,(255,255,255),5)#图片,添加的文字,左上角坐标,字体,字体大小,颜色,字体粗细
cv2.imshow('image',img)
cv2.waitKey(0)
#cv2.destroyAllWindows()

把鼠标当画笔

函数格式都一样,拥有的函数:

#['EVENT_FLAG_ALTKEY', 'EVENT_FLAG_CTRLKEY', 'EVENT_FLAG_LBUTTON',
# 'EVENT_FLAG_MBUTTON', 'EVENT_FLAG_RBUTTON', 'EVENT_FLAG_SHIFTKEY', 'EVENT_LBUTTONDBLCLK',
# 'EVENT_LBUTTONDOWN', 'EVENT_LBUTTONUP', 'EVENT_MBUTTONDBLCLK', 'EVENT_MBUTTONDOWN', 'EVENT_MBUTTONUP',
# 'EVENT_MOUSEHWHEEL', 'EVENT_MOUSEMOVE', 'EVENT_MOUSEWHEEL', 'EVENT_RBUTTONDBLCLK',
# 'EVENT_RBUTTONDOWN', 'EVENT_RBUTTONUP']

##双击过的地方画圆

def draw_circle(event,x,y,flags,param):if event==cv2.EVENT_LBUTTONDBLCLK:cv2.circle(img,(x,y),100,(255,0,0),-1)
img=np.zeros((512,512,3),np.uint8)
cv2.namedWindow('image')
cv2.setMouseCallback('image',draw_circle)
while(1):cv2.imshow('image',img)if cv2.waitKey(20)==ord('q'):break
cv2.destroyAllWindows()

根据我们选择的模式再拖动鼠标是绘制矩形或圆形或矩形

#根据我们选择的模式再拖动鼠标是绘制矩形或圆形或矩形
#当鼠标按下时变为True
drawing=False
#如果mode为True 绘制矩形。按下m后变成绘制曲线
mode=True
ix,iy=-1,-2
#创建回调函数
def draw_circle(event,x,y,flags,param):global ix,iy,drawing,mode#这个一定要写啊
#按下左键是返回起始坐标位置if event==cv2.EVENT_LBUTTONDOWN:drawing=Trueix,iy=x,y
#当鼠标左键按下并移动是绘制图形。event可以查看移动,flag查看是否按下elif event==cv2.EVENT_MOUSEMOVE and flags==cv2.EVENT_FLAG_LBUTTON:if drawing==True:if mode==True:cv2.rectangle(img,(ix,iy),(x,y),(0,255,0),-1)else:#绘制圆圈,小圆点连在一起就成了线,3代表了笔画的粗细cv2.circle(img,(x,y),3,(0,255,0),-1)elif event==cv2.EVENT_LBUTTONUP:drawing=Falseimg=np.zeros((512,512,3),np.uint8)
cv2.namedWindow('image')
cv2.setMouseCallback('image',draw_circle)
while(1):cv2.imshow('image',img)k=cv2.waitKey(1)if k==ord('m'):mode=not modeelif k==27:break
cv2.destroyAllwindows()

#用滑动条做调色板

def nothing(x):passimg=np.zeros((300,512,3),np.uint8)
cv2.namedWindow('image')
cv2.createTrackbar('R','image',0,255,nothing)#滑条名字,放置的窗口的名字,滑条的默认位置,滑条的最大值,回调函数
cv2.createTrackbar('G','image',0,255,nothing)
cv2.createTrackbar('B','image',0,255,nothing)
switch='0:OFF\n1:ON'
cv2.createTrackbar(switch,'image',0,1,nothing)
while(1):cv2.imshow('image',img)k=cv2.waitKey(1)if k==27:breakr=cv2.getTrackbarPos('R','image')g=cv2.getTrackbarPos('G','image')b=cv2.getTrackbarPos('B','image')s=cv2.getTrackbarPos(switch,'image')if s==0:img[:]=0else :img[:]=[b,g,r]
cv2.destroyAllWindows()

用opencv简单绘图相关推荐

  1. OpenCV简单的几何绘图的实例(附完整代码)

    OpenCV简单的几何绘图的实例 OpenCV简单的几何绘图的实例 OpenCV简单的几何绘图的实例 #include <opencv2/core.hpp> #include <op ...

  2. 【opencv 官方教程】翻译2 核心功能 中 图像操作 线性变换 亮度调整 简单绘图

    核心功能 The Core Functionality (core module) Here you will learn the about the basic building blocks of ...

  3. python绘图实例-Python使用matplotlib简单绘图示例

    本文实例讲述了Python使用matplotlib简单绘图.分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #! python2 """ ...

  4. mac下简单绘图工具

    mac下简单绘图工具 由于用的Mac系统的缘故,有时候想绘制一些简单的图形,想找一款像window下的画图工具,一直没有找到 今天无意中想到了一个方法,使用Mac系统自带的"预览" ...

  5. OpenCV简单的过滤器平滑的实例(附完整代码)

    OpenCV简单的过滤器平滑的实例 OpenCV简单的过滤器平滑的实例 OpenCV简单的过滤器平滑的实例 #include <iostream> #include "openc ...

  6. c# GDI+简单绘图(一)

    最近对GDI+这个东西接触的比较多,也做了些简单的实例,比如绘图板,仿QQ截图等. 最早接触这个类,是因为想做仿QQ截图的效果.巧的很,学会了如何做截图后,.NET课堂上老师也正巧要讲关于c#绘图方面 ...

  7. 一个用于提取简体中文字符串中省,市和区并能够进行映射,检验和简单绘图的python模块...

    简介 一个用于提取简体中文字符串中省,市和区并能够进行映射,检验和简单绘图的python模块. 举个例子: ["徐汇区虹漕路461号58号楼5楼", "泉州市洛江区万安塘 ...

  8. VC学习笔记:简单绘图

    VC学习笔记:简单绘图 SkySeraph Oct.29th 2009  HQU Email-zgzhaobo@gmail.com  QQ-452728574 Latest Modified Date ...

  9. 用java实现简单绘图

    用java实现简单绘图的过程中可以让初学者更好的学习java这门语言,更好的理解包括变量类型,类与对象,接口等概念.在学习了简单的Swing程序设计之后,初学者可以运用窗体框架JFrame,布局管理器 ...

最新文章

  1. 使用OpenCV和Dlib的头部姿态估计
  2. redis灵魂拷问:如何使用stream实现消息队列
  3. NLP(4) | 用词向量技术简单分析红楼梦人物关系用n-gramma生成词向量word2vect进行模型训练
  4. 八步搞定个人计算机安全
  5. [转载] 深入剖析 redis 主从复制
  6. Google的投票站点在用Asp.net
  7. Rand7()实现Rand10()
  8. leetcode python3 简单题217. Contains Duplicate
  9. 蓝桥杯 ALGO-157 算法训练 阶乘末尾
  10. 2016年小升初海淀区全部初中排名分析
  11. Ubuntu16.04网卡驱动问题(有线、无线)
  12. Vue表格table样式
  13. ssh实现远程登录服务器
  14. • 硕士论文查重原理与快速通过的七大方法(转载)
  15. vue网易严选购物商城项目
  16. .net remoting和wcf自托管——一个bug引发的警示
  17. pyscripter支持python什么版本_PyScripter|PyScripter(Python集成开发环境)下载v3.4.2.0官方版64位/32位 - 欧普软件下载...
  18. 树莓派安装配置MFRC522模块
  19. Dynamics 365 Online和On-premises在开发方式上的差别
  20. JESD204B 参数理解

热门文章

  1. 【Leetcode】460. LFU Cache
  2. linux启用NAT功能,双网卡共享网络,iptables简单实现
  3. 马踏棋盘(java)
  4. jfif是什么格式?怎么转换成jpg?
  5. 真无线蓝牙耳机怎么选?分体式蓝牙耳机选购攻略及推荐
  6. Culling技术的一些介绍
  7. 伦敦金走势图与顾比均线
  8. Windows 内网渗透之攻击域控
  9. 【小技巧】如何对混乱的HTML/CSS/JS代码进行格式化排版
  10. SAS的基本使用介绍2(变量的输入输出格式)