21xrx.com
2024-05-20 01:40:21 Monday
登录
文章检索 我的文章 写文章
使用OpenCV中的Trackbar控制图片
2023-09-24 07:32:56 深夜i     --     --
OpenCV Trackbar 控制 图片 参数调节

OpenCV是一个开源的计算机视觉库,广泛应用于图像和视频处理任务。其中的Trackbar功能是一种非常有用的工具,可以通过调节滑块控制不同参数的值,进而对图像进行实时处理。本文将介绍如何使用OpenCV中的Trackbar控制图片。

首先,我们需要创建一个窗口,并载入一张图像。代码如下:


import cv2

import numpy as np

def onTrackbarChange(pos):

  pass

image = cv2.imread('image.jpg')

cv2.namedWindow('Image')

cv2.createTrackbar('Brightness', 'Image', 0, 255, onTrackbarChange)

cv2.createTrackbar('Contrast', 'Image', 100, 200, onTrackbarChange)

在这段代码中,我们首先导入了OpenCV和numpy库。接着,我们定义了一个空函数`onTrackbarChange`,稍后我们将在这个函数中实现滑块值的处理逻辑。

然后,我们使用`cv2.imread`函数加载一张图像,并创建一个名为"Image"的窗口。之后,我们分别使用`cv2.createTrackbar`函数创建了两个滑块,用于调节图像的亮度和对比度。

接下来,我们需要在`onTrackbarChange`函数中添加滑块值的处理逻辑。这个函数将会在滑块的值发生变化时被调用。我们可以获取滑块的值,并将其应用于图像。代码如下:


def onTrackbarChange(pos):

  brightness = cv2.getTrackbarPos('Brightness', 'Image')

  contrast = cv2.getTrackbarPos('Contrast', 'Image')

  adjusted_image = np.int16(image) * (contrast/100.0) + brightness

  adjusted_image = np.clip(adjusted_image, 0, 255)

  adjusted_image = np.uint8(adjusted_image)

  cv2.imshow('Image', adjusted_image)

在这段代码中,我们首先使用`cv2.getTrackbarPos`函数获取滑块的值。然后,我们对图像进行亮度和对比度的调整,使用numpy库中的数值计算和限制函数,确保调整后的值在合理的范围内。最后,我们使用`cv2.imshow`函数显示调整后的图像。

最后,我们需要添加一个主循环,以便等待用户交互操作。代码如下:


while True:

  if cv2.waitKey(1) & 0xFF == ord('q'):

    break

cv2.destroyAllWindows()

在这段代码中,我们使用`cv2.waitKey`函数实现了主循环。它等待用户按下字母"q"来退出程序。

现在,我们已经完成了整个程序的编写。当我们运行程序时,会弹出一个窗口,其中有两个滑块。我们可以通过拖动滑块来调整图像的亮度和对比度,实时观察调整效果。

总结一下,本文介绍了如何使用OpenCV中的Trackbar控制图像的亮度和对比度。通过创建窗口和滑块,并在滑块值发生变化时处理图像,我们可以方便地实现图像的实时调整。这为图像处理任务提供了一个非常便捷和交互性的工具。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复
    相似文章