Opencv人机交互界面设置

Opencv人机交互界面设置

以下是一些常见的OpenCV人机交互界面设置:

窗口交互

显示窗口:可以使用cv2.imshow()函数在屏幕上显示图像。例如,要显示名为“image”的图像,可以使用以下代码:

import cv2

img = cv2.imread('image.jpg') #读取图像
cv2.imshow('image', img) #显示图像
cv2.waitKey(0) #等待按键输入
cv2.destroyAllWindows() #销毁所有窗口

这将在屏幕上显示名为“image”的图像,并等待用户按下任意键来关闭窗口。如果用户按下“q”键,则会关闭窗口。如果用户按下其他键,则不会执行任何操作。

显示带标题的窗口:可以使用cv2.namedWindow()函数创建带有标题的窗口。例如,要创建一个名为“image_with_title”的带有标题的窗口,可以使用以下代码:

import cv2

img = cv2.imread('image.jpg') #读取图像
cv2.namedWindow('image_with_title', cv2.WINDOW_NORMAL) #创建带有标题的窗口
cv2.imshow('image_with_title', img) #显示图像
cv2.waitKey(0) #等待按键输入
cv2.destroyAllWindows() #销毁所有窗口

这将在屏幕上创建一个带有标题“image_with_title”的窗口,并在其中显示名为“image”的图像。如果用户按下任意键来关闭窗口,则不会执行任何操作。如果用户按下“q”键,则会关闭窗口。如果用户按下其他键,则不会执行任何操作。

滑块交互

penCV 提供了滑块(Slider)或称为轨迹条(Trackbar)的功能,允许用户在图形用户界面(GUI)中动态调整参数。这对于交互式地改变图像处理的参数或效果非常有用。以下是使用 OpenCV 创建滑块的基本步骤和示例代码。

基本步骤:

创建窗口:使用 cv2.namedWindow() 函数创建一个窗口,这个窗口将作为滑块的容器。

创建滑块:使用 cv2.createTrackbar() 函数在指定的窗口中创建一个滑块。该函数需要以下参数:

滑块的名称
滑块所在的窗口名称
滑块的初始值
滑块的最大值
回调函数(可选)

处理滑块事件:在回调函数中处理滑块值的变化。回调函数在滑块值改变时被调用,并接收当前滑块的值作为参数。

显示和更新:使用 cv2.imshow() 显示图像或处理结果,并在循环中不断更新。

等待和退出:使用 cv2.waitKey() 等待用户输入,并在按下特定键时退出循环。

具体代码演示案例:

import cv2  
import numpy as np  
  
# 创建一个空白图像  
image = np.zeros((400, 600, 3), np.uint8)  
  
# 在图像上绘制一些文本或形状以便观察效果  
cv2.putText(image, 'Move the slider to blur', (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)  
  
# 创建窗口  
cv2.namedWindow('Slider Demo')  
  
# 初始化模糊程度变量  
blur_amount = 15  
  
# 创建滑块  
cv2.createTrackbar('Blur Amount', 'Slider Demo', blur_amount, 100, lambda x: None)  
  
while True:  
    # 获取当前滑块的值  
    blur_amount = cv2.getTrackbarPos('Blur Amount', 'Slider Demo')  
      
    # 应用模糊效果  
    blurred_image = cv2.GaussianBlur(image, (blur_amount, blur_amount), 0)  
      
    # 显示处理后的图像  
    cv2.imshow('Slider Demo', blurred_image)  
      
    # 等待按键,如果按下 'q',则退出循环  
    key = cv2.waitKey(1) & 0xFF  
    if key == ord('q'):  
        break  
  
# 销毁所有窗口  
cv2.destroyAllWindows()

相关推荐

  1. Opencv人机交互界面设置

    2024-04-04 09:16:02       34 阅读
  2. 狭义人机交互与广义人机交互

    2024-04-04 09:16:02       29 阅读
  3. 绝对人机交互和相对人机交互

    2024-04-04 09:16:02       31 阅读
  4. 北航人机交互复习

    2024-04-04 09:16:02       42 阅读
  5. 浅谈人机交互

    2024-04-04 09:16:02       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-04 09:16:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-04 09:16:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-04 09:16:02       82 阅读
  4. Python语言-面向对象

    2024-04-04 09:16:02       91 阅读

热门阅读

  1. Unity进阶之路(1)回顾与思考

    2024-04-04 09:16:02       32 阅读
  2. Unity进阶之路(2)UI Toolkit

    2024-04-04 09:16:02       32 阅读
  3. python继承和多态

    2024-04-04 09:16:02       31 阅读
  4. 管理相关方参与的工具与技术

    2024-04-04 09:16:02       39 阅读
  5. rabbitmq消息处理模式

    2024-04-04 09:16:02       31 阅读
  6. git branch 是干什么的

    2024-04-04 09:16:02       36 阅读
  7. django-hexo-admin(一个基于django的hexo博客平台)

    2024-04-04 09:16:02       41 阅读
  8. C#面:.NET 中读写 XML 的类归属于哪些命名空间

    2024-04-04 09:16:02       39 阅读
  9. MongoDB数据更新大之大与小中小

    2024-04-04 09:16:02       36 阅读
  10. IIoT的未来趋势和挑战

    2024-04-04 09:16:02       42 阅读