cv.namedWindow(winname, flags=None)
参数 | 说明 |
---|---|
winname | 表示创建窗口的名称。 |
flags | 表示创建的窗口类型。 |
值 | 说明 |
---|---|
WINDOW_NORMAL | 表示显示图像后,允许用户随意调整窗口大小。 |
WINDOW_AUTOSIZE | 表示根据图像大小显示窗口,不允许用户调整大小。 |
WINDOW_KEEPRATIO | 表示保持图像的比例。 |
cv.createTrackbar(trackbarname, winname, value, count, trackbarcallback, userdata)
参数 | 说明 |
---|---|
trackbarname | 表示轨迹栏的名称。 |
winname | 表示附加到的窗口名称。 |
value | 一个指向整形的指针, 表示滑块的位置。 创建时,滑块的初始位置就是该变量当前的值。 |
count | 表示滑块可以达到的最大位置的值。 滑块最小位置的值始终为0。 |
trackbarcallback | 表示执行的回调函数每次跟踪栏值更改。【回调函数始终具有默认参数,即轨迹栏位置。】 |
userdata | 表示默认值0。这个参数是用户传递给回调函数的数据,用来处理轨迹条事件。如果使用的第三个参数value是全局变量,完全可以不去管这个userdata参数。 |
cv.getTrackbarPos(trackbarname, winname)
参数 | 说明 |
---|---|
trackbarname | 表示轨迹栏的名称。 |
winname | 表示轨迹栏依托窗口的名称。 |
cv.waitKey(delay=0)
参数 | 说明 |
---|---|
delay | 表示阻塞指定毫秒数。 |
值 | 说明 |
---|---|
0或者不填写 | 表示一直阻塞。 |
大于0 | 表示阻塞指定毫秒数。 |
该函数的返回值,在不同的操作系统中可能会有差异。
cv.imshow(winname, mat)
参数 | 说明 |
---|---|
winname | 表示需要显示图像的窗口名称。 |
mat | 表示需要显示的图像。 |
import cv2 as cv
import numpy as np
# 回调函数
def trackbarcallback(value):
print(value)
pass
def adjust_brightness_demo():
# 读取图片
img = cv.imread('./images/butterfly.jpg')
# 复制一个用于修改合并的图片
img_copy = np.zeros_like(img)
# 创建一个名为 adjust_brightness 的窗口
cv.namedWindow('adjust_brightness')
# 创建一个名为 progress 的轨迹栏,将其依托到 adjust_brightness 窗口
cv.createTrackbar('progress', 'adjust_brightness', 0, 100, trackbarcallback)
# 循环获取轨迹栏的值
while 1:
# 将图像 img_copy 显示到 adjust_brightness 窗口
cv.imshow('adjust_brightness', img_copy)
# 每10毫秒 获取键盘操作值,如果是 【ESC】 退出循环
key = cv.waitKey(10)
if key == 27:
break
# 获取 adjust_brightness 窗口中 progress 轨迹栏的位置
value = cv.getTrackbarPos('progress', 'adjust_brightness')
# 将轨迹栏的位置值转换为OpenCV图像值
value = np.uint8(value)
# 修改复制图片的像素值
img_copy[:] = (value, value, value)
# 使用像素运算中的加法,增减亮度
img_copy = cv.add(img, img_copy)
# 销毁全部窗口
cv.destroyAllWindows()
if __name__ == "__main__":
adjust_brightness_demo()
import cv2 as cv
import numpy as np
def handle_key():
# 读取图片
img = cv.imread('./images/butterfly.jpg')
# 复制一个 img 用于转换的矩阵
img_copy = cv.add(img, np.zeros_like(img))
# 创建一个名为 waitkey 的窗口
cv.namedWindow('waitkey')
while 1:
# 将图像 img_copy 显示到 waitkey 窗口
cv.imshow('waitkey', img_copy)
# 每10毫秒 获取键盘操作值
key = cv.waitKey(10)
if key == 27:
break
# 按0
elif key == 48:
img_copy = img
# 按1
elif key == 49:
img_copy = cv.cvtColor(img, cv.COLOR_BGR2HSV)
# 按2
elif key == 50:
img_copy = cv.cvtColor(img, cv.COLOR_BGR2YCrCb)
# 按3
elif key == 51:
img_copy = cv.cvtColor(img, cv.COLOR_BGR2RGB)
# 销毁窗口
cv.destroyAllWindows()
if __name__ == "__main__":
handle_key()
TypeError: function takes exactly 5 arguments (4 given)