首页 > 其他分享 >GUI的绘图功能、鼠标作为画笔、作为调色板的跟踪栏

GUI的绘图功能、鼠标作为画笔、作为调色板的跟踪栏

时间:2024-10-08 13:32:42浏览次数:1  
标签:鼠标 img image 调色板 cv np import GUI 255

  • 用 OpenCV 画不同的几何图形

主要函数:cv.line(), **cv.circle() , cv.rectangle()cv.ellipse()cv.putText() 

 

Code

1 上面的这些函数,我们能看到一些相同的参数:
2 
3 img:要画的图片
4 
5 color:形状的颜色,如 BGR,它是一个元组,例如:蓝色(255,0,0)。对于灰度图,只需传一个标量值。
6 
7 thickness: 线或圆等的厚度。如果传 -1 就是像圆的闭合图形,它将填充形状。_ 默认 thickness = 1_
8 
9 lineType:线条类型,如 8 连接,抗锯齿线等。默认情况下,它是 8 连接。**cv.LINE_AA** 画出抗锯齿线,非常好看的曲线。

 

画线

1 import numpy as np
2 import cv2 as cv
3 
4 # 创建一个黑色的图像
5 img = np.zeros((512, 512, 3), np.uint8)
6 # 画一条 5px 宽的蓝色对角线
7 cv.line(img, (0, 0), (511, 511), (255, 0, 0), 5)
8 cv.imshow('image', img)
9 cv.waitKey(0)

 

 

画矩形、画圆、画椭圆、画多边形、

 1 import numpy as np
 2 import cv2 as cv
 3 
 4 # 创建一个黑色的图像
 5 img = np.zeros((512, 512, 3), np.uint8)
 6 # 在图像上画一个绿色的矩形
 7 cv.rectangle(img, (384, 0), (510, 128), (0, 255, 0), 3)
 8 # 画圆
 9 cv.circle(img,(447,63), 63, (0,0,255), -1)
10 # 画椭圆
11 cv.ellipse(img,(256,256),(100,50),0,0,180,255,-1)
12 # 画多边形
13 pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
14 pts = pts.reshape((-1,1,2))
15 cv.polylines(img,[pts],True,(0,255,255))
16 
17 cv.imshow('image', img)
18 cv.waitKey(0)

 

 

 

鼠标作为画笔

cv.setMouseCallback()

创建鼠标回调函数是有特定的格式,在任何地方都一样。它仅仅是函数的功能不同。因此我们的鼠标回调函数是做一件事,就是我们双击的地方画圆

 1 import numpy as np
 2 import cv2 as cv
 3 
 4 
 5 # 鼠标回调函数
 6 def draw_circle(event, x, y, flags, param):
 7     if event == cv.EVENT_LBUTTONDBLCLK:
 8         cv.circle(img, (x, y), 100, (255, 0, 0), -1)
 9 
10 
11 # 创建一个黑色图像,一个窗口,然后和回调绑定
12 img = np.zeros((512, 512, 3), np.uint8)
13 cv.namedWindow('image')
14 cv.setMouseCallback('image', draw_circle)
15 while (1):
16     cv.imshow('image', img)
17     if cv.waitKey(20) & 0xFF == 27:
18         break
19 cv.destroyAllWindows()

 

作为调色板的跟踪栏

函数:cv.getTrackbarPos(), **cv.createTrackbar()

这里,我们将创建用以显示指定颜色的简单程序。 你有一个显示颜色的窗口和三个轨迹栏,用来指定 B,G,R 颜色。你可以滑动轨迹栏改变窗口的颜色。默认情况下,初始颜色为黑色。

对于 cv.createTrackbar() 函数,第一个参数是轨迹栏名字,第二个参数是被附上的窗口名字,第三个参数是默认值,第四个是最大值,第五个是回调函数——滑条改变所执行的函数。这个回调函数也有一个默认参数,表示轨迹栏位置。我们并不关心函数做什么事,所以只是简单提一下。

轨迹栏的另一个重要应用是用作按钮或者开关。OpenCV在默认情况下没有按钮功能,因此我们用轨迹栏实现这样的功能。在我们的程序中创建了一个开关,其中程序只会在开关打开时有效,否则屏幕始终是黑色。

 1 import numpy as np
 2 import cv2 as cv
 3 
 4 
 5 def nothing(x):
 6     pass
 7 
 8 
 9 # 创建一个黑色图像,一个窗口
10 img = np.zeros((300, 512, 3), np.uint8)
11 cv.namedWindow('image')
12 # 创建一个改变颜色的轨迹栏
13 cv.createTrackbar('R', 'image', 0, 255, nothing)
14 cv.createTrackbar('G', 'image', 0, 255, nothing)
15 cv.createTrackbar('B', 'image', 0, 255, nothing)
16 # 创建一个用来启用和关闭功能的开关
17 switch = '0 : OFF \n1 : ON'
18 cv.createTrackbar(switch, 'image', 0, 1, nothing)
19 while (1):
20     cv.imshow('image', img)
21     k = cv.waitKey(1) & 0xFF
22     if k == 27:
23         break
24     # get current positions of four trackbars
25     r = cv.getTrackbarPos('R', 'image')
26     g = cv.getTrackbarPos('G', 'image')
27     b = cv.getTrackbarPos('B', 'image')
28     s = cv.getTrackbarPos(switch, 'image')
29     if s == 0:
30         img[:] = 0
31     else:
32         img[:] = [b, g, r]
33 cv.destroyAllWindows()

 

 

 

标签:鼠标,img,image,调色板,cv,np,import,GUI,255
From: https://www.cnblogs.com/liuliu1/p/18451475

相关文章

  • three.js 鼠标点击获取模型对象
    three.js 创建模型后,想要实现点击模型获取模型对象触发相应事件。可以使用它提供的APITHREE.Raycaster()https://threejs.org/docs/index.html?q=Raycaster#api/en/core/Raycaster//监听点击事件window.addEventListener('click',(event)=>{event.preventDefault......
  • 学习Openmv的第四天——鼠标绘图
    1、简单演示在这里,我们创建一个简单的应用程序,无论我们在哪里双击它,都可以在图像上绘制一个圆。首先,我们创建一个鼠标回调函数,该函数在发生鼠标事件时执行。鼠标事件可以是与鼠标相关的任何事物,例如左键按下,左键按下,左键双击等。它为我们提供了每个鼠标事件的坐标(x,y)。通......
  • c++ 键盘/鼠标交互
    c++键盘/鼠标交互鼠标操作点击加上如下宏定义#include<windows.h>#defineKEY_DOWN(VK_NONAME)((GetAsyncKeyState(VK_NONAME)&0x8000)?1:0)#defineKEY_UP(VK_NONAME)((GetAsyncKeyState(VK_NONAME)&0x8000)?0:1)如果获取左键的点击,可以使用如下的代码:KEY_D......
  • 使用鼠标点击矩阵上下左右的数字初始化为1 计算所需总共点击次数矩阵所有数字变成1的
    1importjava.util.ArrayList;23publicclassHuaweiTest2{4publicstaticvoidmain(String[]args){5//System.out.println("HelloWorld!");6}78publicstaticIntegergetMilliSecondsForInputInicialize......
  • 以鼠标位置进行图像非中心zoom
    #以鼠标位置进行图像非中心zoomimporttkinterastkfromPILimportImage,ImageTkimage_show_width=800image_show_height=600window_width=image_show_widthwindow_height=image_show_height+120root=tk.Tk()root.geometry(f"{window_width}x{window_he......
  • CF589H Tourist Guide
    昨晚码敲完了没保存,导致还原卡直接把我码肘没了。。。气死了只能重新敲了一遍。题面TouristGuide分析考虑每一个联通块分开处理。先将每一个联通块变为生成树,任意生成方式皆可。对于每一个联通块,一定可以构造一种组合方法,使得该联通块中最多只有一个关键点无法被选择。并......
  • Meta:LLM语言概念推理基准Linguini
    ......
  • HS6621Cx 一款低功耗蓝牙SoC芯片 应用于键盘、鼠标和遥控器消费类产品动能世纪
    HS6621Cx是一款功耗优化的真正片上系统(SOC)解决方案,适用于低功耗蓝牙和专有2.4GHz应用。它集成了高性能、低功耗射频收发器,具有蓝牙基带和丰富的外设IO扩展。HS6621Cx还集成了电源管理功能,可提供高效的电源管理。它面向2.4GHz蓝牙低功耗系统、专有2.4GHz系统、人机接口设备(键盘......
  • [GAN][图片异常检测]Unsupervised Anomaly Detection withGenerative Adversarial Net
    论文背景与目标:    本文旨在将GAN运用到图片异常检测中,并取得了一定的效果,该模型不仅能够检测已知的异常,还能够发现未曾标注的新异常。提出了结合GAN的生成和判别功能的新型异常评分方法。在无监督的前提下实现了异常图像的分割。通过利用GAN的潜在空间,提出了新的......
  • 【GUI设计】基于Matlab的图像特征提取GUI系统(9),matlab实现
             博主简介:如需获取设计的完整源代码或者有matlab图像代码项目需求,可联系主页简介提供的方式或者文末的扫码。~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        本次案例是基于Matlab的图像特征提取GUI系统(9),用m......