Skip to content

Latest commit

 

History

History
149 lines (115 loc) · 3.29 KB

598-1189945-滑动条事件.sy.md

File metadata and controls

149 lines (115 loc) · 3.29 KB
show version enable_checker
step
1.0
true

opencv

回忆

  • 可以在空白黑底图像上写字
    • 字体
    • 颜色
    • 朝向
    • 大小
    • ...都可以修改
  • 可以试试使用滚动条吗?

滑动条的使用

import cv2
import numpy as np

def callback(value):
    print(value)

cv2.namedWindow('canvas', cv2.WINDOW_NORMAL)
cv2.resizeWindow('canvas', 640, 480)
cv2.createTrackbar('T', 'canvas', 0, 100, callback)
while True:
    t = cv2.getTrackbarPos('T', 'canvas')
    canvas = np.zeros((480,640,3), np.uint8)
    cv2.putText(canvas,str(t),(30,80),cv2.FONT_HERSHEY_TRIPLEX,2,(0,255,0),5)
    cv2.imshow('canvas', canvas)

    key = cv2.waitKey(1)
    if key & 0xFF == ord('q'):
        break
cv2.destroyAllWindows()
  • 运行结果
    • 滚动条数值在画布上显示
    • 在回调函数中 向终端输出数字

图片描述

  • 可以去除死循环吗?

去除死循环

import cv2
import numpy as np

def callback(value):
    print(value)
    t = cv2.getTrackbarPos('T', 'canvas')
    canvas= np.zeros((640,480,3), np.uint8)
    cv2.putText(canvas,str(t),(30,80),cv2.FONT_HERSHEY_TRIPLEX,2,(0,255,0),5)
    cv2.imshow('canvas', canvas)

cv2.namedWindow('canvas', cv2.WINDOW_NORMAL)
canvas = np.zeros((640,480,3),np.uint8)
cv2.imshow('canvas', canvas)
cv2.createTrackbar('T', 'canvas', 0, 100, callback)
key = cv2.waitKey(0)
cv2.destroyAllWindows()

  • 效果

图片描述

  • 除了 控制 终端输出的 文本外
    • 可以 控制文本的 输出位置吗?

控制文本坐标位置

import cv2
import numpy as np

def callback(value):
    print(value)
    t = cv2.getTrackbarPos('T', 'canvas')
    canvas = np.zeros((640,480,3), np.uint8)
    x = t*4 + 80
    cv2.putText(canvas,str(t),(x,80),cv2.FONT_HERSHEY_TRIPLEX,2,(0,255,0),5)
    cv2.imshow('canvas', canvas)

cv2.namedWindow('canvas', cv2.WINDOW_NORMAL)
canvas = np.zeros((640,480,3), np.uint8)
cv2.imshow('canvas', canvas)
cv2.createTrackbar('T', 'canvas', 0, 100, callback)
key = cv2.waitKey(0)
cv2.destroyAllWindows()
  • 最终结果

图片描述

  • 确实可以控制
    • 文本位置
  • 可以控制颜色吗?

RGB

  • 事件触发
    • 事件发生的时候 才调用
import cv2
import numpy as np

cv2.namedWindow('trackbar', cv2.WINDOW_NORMAL)
cv2.resizeWindow('trackbar', 640, 480)
def callback(value):
    r = cv2.getTrackbarPos('R', 'trackbar')
    g = cv2.getTrackbarPos('G', 'trackbar')
    b = cv2.getTrackbarPos('B', 'trackbar')
    img[:] = [b, g, r]
    cv2.imshow('trackbar', img)
    print(value)

cv2.createTrackbar('R', 'trackbar', 0, 255, callback)
cv2.createTrackbar('G', 'trackbar', 0, 255, callback)
cv2.createTrackbar('B', 'trackbar', 0, 255, callback)
img = np.zeros((480,640,3), np.uint8)
cv2.imshow('trackbar', img)
if cv2.waitKey(0) == ord('q'):
    cv2.destroyAllWindows()
  • 结果

图片描述

总结

  • 这次我们研究了滚动条
  • 可以控制画面不同的
    • 文本内容
    • 文本位置
    • 具体颜色
  • 还可以有什么样具体的应用吗?🤔
  • 我们下次再说 👋