opencv 学习通过OpenCV图形界面基础

用的函数有

cv.line(), cv.circle(),cv.rectangle(), cv.ellipse(),cv.putText()

常用参数

  • img : 想要绘制图形的图片
  • color: 图形的颜色, BGR
  • thickness:厚度
  • lineType: 线的类型, 8-connected、anti-aliased 等

绘制线段

import numpy as np
import cv2 as cv
# 创建一个黑色的图片
img = np.zeros((512,512,3), np.uint8)
# 绘制一个蓝色5px对角线
cv.line(img, (0, 0), (511, 511), (255, 0, 0), 5)

绘制矩形

cv.rectangle(img,(384, 0), (510, 128), (0,255,0), 3)

绘制圆

cv.circle(img,(447, 63), 63, (0, 0, 255), -1)

绘制椭圆

cv.ellipse(img, (256,256), (100, 50), 0, 0, 180, 255, -1)

绘制多边形

pts = np.array([[10, 5], [20, 30], [70, 20],[50, 10], np.int32])
pts = pts.reshape((-1, 1, 2))
cv.polylines(img, [pts], True, (0, 255, 255))

Adding Text to Images:

font = cv.FONT_HERSHEY_SIMPLEX
cv.putText(img,'OpenCV', (10, 500), font, 4, (255, 255, 255), 2, cv.LINE_AA)

opencv监听鼠标事件

import numpy as np
import cv2 as cvevents = [i for i in dir(cv) if 'EVENT' in i]
print(events) # 遍历所有鼠标事件drawing = False
mode = True
ix, iy, = -1, -1# 监听鼠标按、移动、抬起动作
def draw_circle(event, x, y, flags, param):global ix, iy, drawing, modeif event == cv.EVENT_LBUTTONDOWN:drawing = Trueix, iy = x, yif event == cv.EVENT_LBUTTONDBLCLK:if drawing:if mode:cv.rectangle(img, (ix, iy), (x, y), (0, 255, 0), -1)else:cv.circle(img, (x, y), 5, (0, 0, 255), -1)elif event == cv.EVENT_LBUTTONUP:drawing = Falseif mode:cv.rectangle(img, (ix, iy), (x, y), (0, 255, 0), -1)else:cv.circle(img, (x, y), 5, (0, 0, 255), -1)img = np.zeros((512, 512, 3), np.uint8)
cv.namedWindow('image')
cv.setMouseCallback('image', draw_circle)while 1:cv.imshow('image', img)k = cv.waitKey(1) & 0xFFif k == ord('m'):#监听键盘m键mode = not modeelif k == 27:#监听escbreak
cv.destroyAllWindows()

opencv 绑定视图进度条

import numpy as np
import cv2 as cvdef nothing(x):passimg = np.zeros((300, 512, 3), np.uint8)
cv.namedWindow('image')cv.createTrackbar('R', 'image', 0, 255, nothing)
cv.createTrackbar('G', 'image', 0, 255, nothing)
cv.createTrackbar('B', 'image', 0, 255, nothing)switch = '0 : 0FF \n1 : ON'
cv.createTrackbar(switch, 'image', 0, 1, nothing)while 1:cv.imshow('image', img)k = cv.waitKey(1) & 0xFFif k == 27:breakr = cv.getTrackbarPos('R', 'image')g = cv.getTrackbarPos('G', 'image')b = cv.getTrackbarPos('B', 'image')s = cv.getTrackbarPos(switch, 'image')if s == 0:img[:] = 0else:img[:] = [b, g, r]cv.destroyAllWindows()

opencv (一) 学习通过OpenCV图形界面及基础相关推荐

  1. 学习记录:图形界面系列教材

    学习内容:图形界面系列教材 学习关于多线程的内容(一) ## 按钮监听 创建一个匿名类实现ActionListener接口,当按钮被点击时,actionPerformed方法就会被调用 b.addAc ...

  2. Python学习笔记——开发图形界面wxPython、PyQt、PySide选哪一个?

    学习Python,就不得不提一下Python的图形界面开发,如果只用命令行写程序,用户体验不太好,难以胜任复杂的人机交互场景.Python的图形界面开发库常用的有:Tkinter.wxPython.P ...

  3. java图形界面的监听_非专业码农 JAVA学习笔记 用户图形界面设计与实现-所有控件的监听事件...

    用户图形界面设计与实现-监听事件 System.applet.Applet (一)用户自定义成分 1.绘制图形 Public voit piant(Ghraphics g){  g.drawLine等 ...

  4. Java学习--网络,图形界面和数据库

    深入理解java2:软件开发常用实用技术 1文件及目录:java.io 1.1基本操作 File f; f=new File("a.txt");//当前目录下的文件 f=new F ...

  5. 爱上hal库学习笔记——cubemx图形界面,洋桃电子YYDS

    新建工程 选择封装芯片型号 3.图形界面  (一)系统内核 DMA 直接存储器访问:可不通过CPU程序处理直接从某个功能自动读出数据 GPIO 通用输入输出端口:可把电平输入输出,读取按键和控制LED ...

  6. GUI图形界面编程基础知识

    文章目录 一.GDI概述 二.OpenGL 三.什么是DirectX? 四.GDI与OpenGL与DirectX之间的区别 五.显卡驱动 1.显卡概述 2.显卡工作原理 六.C++图形化GUI开发框架 ...

  7. linux 的图形编程基础,linux 图形界面编程基础

    这篇文章是转载的: 很多LINUX初学者分不清楚linux和X之间,X和Xfree86之间,X和KDE,GNOME等之间是什么关系.常常混淆概念,我想以比较易于理 解的方式说明一下X,X11,XFRE ...

  8. java图形界面详解_JAVA 图形界面开发基础详解

    与C的win32一样,JAVA也有自己的图形界面开发,将在此篇博客中对基础部分进行讲解. 1.Java提供的图形界面类有哪些? Java提供了两套图形界面 (1)AWT组建(基础) AWT组件是jdk ...

  9. opencv图像处理学习随笔:帮助文档运算公式中saturate的含义

    ☞ ░ 前往老猿Python博文目录 ░ 在opencv文档中中,加法运算的一种计算公式如下: dst(I)=saturate(src1(I)+src2(I))if mask(I)≠0 类似的公式还有 ...

最新文章

  1. android ValueAnimator学习
  2. SAP MM初阶之事务代码MIGO界面批次拆分最多输入15行?
  3. 【C++】 15_类于封装的概念
  4. 时间日期格式转换_JAVA
  5. linux死机了怎么办?
  6. 隐藏1:N关系和工具
  7. jquery ajax请求 清除缓存
  8. 使用duilib开发半透明异形窗体程序(附源码和demo)
  9. spark视频-Spark on Yarn
  10. google搜索url参数总结
  11. Java编程思想 经典评注分享
  12. linux命令详解词典pdf,[计算机]linux命令详解词典
  13. Cool edit pro 2.1简体中文版下载
  14. 【FXCG】海龟交易法的使用方法和注意事项
  15. 搭建Maven私服Nexus
  16. Docker-常用基础命令整理
  17. 操作系统-进程映像、虚拟内存
  18. 信息学奥赛一本通 1375:骑马修栅栏(fence) | 洛谷 P2731 [USACO3.3]骑马修栅栏 Riding the Fences
  19. Android SDK包下载分享
  20. Appium+python自动化(二十三)- 真假美猴王Monkeyrunner与Monkey傻傻的分不清楚(超详解)...

热门文章

  1. 每日一题:leetcode724.寻找数组的中心索引
  2. vim多列操作--插入/删除
  3. 【数据库】数据库基本概念:数据库管理系统 / 数据库 / 表 / 数据
  4. 701. 二叉搜索树中的插入操作
  5. 【Leetcode | 42】129. 求根到叶子节点数字之和
  6. Redis高频面试笔记:java版本号比较算法
  7. 记得把每一次面试当做经验积累,深夜思考
  8. 37)智能指针(就是自动delete空间)
  9. 行为扩展以及插件机制
  10. 1.初学MVC3学习笔记1