Python OpenCV 使用滑动条来调整函数参数的方法

引言

在观察OpenCV中某个函数在不同参数的情况下,所得到的效果的时候,我之前是改一次参数运行一次,这样做起来操作麻烦,效率低下。为了更便捷的观察参数变化时带来的处理效果改变 可以使用滑动条来改变参数

具体思路

  1. 使用cv2.createTrackbar()创建滑动条,有几个参数就创建几个
  2. 对每个参数定义回调函数
  3. 在回调函数中显示图片

注意 滑动条的窗口名称 要与 图片显示的窗口名字相同

代码实现

import cv2

d = 0
color = 0
space = 0
def change_d(x):
  d = x
  blur = cv2.bilateralFilter(img,d,color,space)
  cv2.imshow("myImg",blur)

def change_color(x):
  color = x
  blur = cv2.bilateralFilter(img,d,color,space)
  cv2.imshow("myImg",blur)

def change_space(x):
  space = x
  blur = cv2.bilateralFilter(img,d,color,space)
  cv2.imshow("myImg",blur)

img = cv2.imread('car2.jpeg')
cv2.namedWindow('myImg')
cv2.createTrackbar('d','myImg',1,500,change_d)
cv2.createTrackbar('color','myImg',1,500,change_color)
cv2.createTrackbar('space','myImg',1,500,change_space)

while(1):
  k = cv2.waitKey(1)&0xFF
  if k==27:
    break
  d = cv2.getTrackbarPos('d','myImg')
  color = cv2.getTrackbarPos('color','myImg')
  space = cv2.getTrackbarPos('space','myImg')

cv2.destroyAllWindows()

效果展示

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 对python opencv 添加文字 cv2.putText 的各参数介绍

    如下所示: cv2.putText(img, str(i), (123,456)), font, 2, (0,255,0), 3) 各参数依次是:图片,添加的文字,左上角坐标,字体,字体大小,颜色,字体粗细 其中字体可以选择 FONT_HERSHEY_SIMPLEX Python: cv.FONT_HERSHEY_SIMPLEX normal size sans-serif font FONT_HERSHEY_PLAIN Python: cv.FONT_HERSHEY_PLAIN small s

  • python opencv设置摄像头分辨率以及各个参数的方法

    1,为了获取视频,你应该创建一个 VideoCapture 对象.他的参数可以是设备的索引号,或者是一个视频文件.设备索引号就是在指定要使用的摄像头.一般的笔记本电脑都有内置摄像头.所以参数就是 0.你可以通过设置成 1 或者其他的来选择别的摄像头.之后,你就可以一帧一帧的捕获视频了.但是最后,别忘了停止捕获视频.使用 ls /dev/video*命令可以查看摄像头设备 2,cap.read() 返回一个布尔值(True/False).如果帧读取的是正确的,就是 True.所以最后你可以通过检查

  • Python OpenCV 使用滑动条来调整函数参数的方法

    引言 在观察OpenCV中某个函数在不同参数的情况下,所得到的效果的时候,我之前是改一次参数运行一次,这样做起来操作麻烦,效率低下.为了更便捷的观察参数变化时带来的处理效果改变 可以使用滑动条来改变参数 具体思路 使用cv2.createTrackbar()创建滑动条,有几个参数就创建几个 对每个参数定义回调函数 在回调函数中显示图片 注意 滑动条的窗口名称 要与 图片显示的窗口名字相同 代码实现 import cv2 d = 0 color = 0 space = 0 def change_d

  • python opencv 实现读取、显示、写入图像的方法

    opencv是一个强大的图像处理和计算机视觉库,实现了很多实用算法,值得学习和深究下. opencv包安装 · 这里直接安装opencv-python包(非官方): pip install opencv-python 官方文档:https://opencv-python-tutroals.readthedocs.io/en/latest/ 1.读取图像 import cv2 image=cv2.imread("dog2.jpg",1) 说明: 第二个参数是一个标志,它指定了读取图像的方

  • Python实现采用进度条实时显示处理进度的方法

    本文实例讲述了Python实现采用进度条实时显示处理进度的方法.分享给大家供大家参考,具体如下: 前言 在大多数时候,我们的程序会一直进行循环处理.这时候,我们非常希望能够知道程序的处理进度,由此来决定接下来该做些什么.接下来告诉大家如何简单又漂亮的实现这一功能. 如何使用这个类 使用这个类很简单,只需要三步即可完成,如下: process_bar = ShowProcess(max_steps) # 1.在循环前定义类的实体, max_steps是总的步数 for i in range(max

  • python使用装饰器和线程限制函数执行时间的方法

    本文实例讲述了python使用装饰器和线程限制函数执行时间的方法.分享给大家供大家参考.具体分析如下: 很多时候函数内部包含了一些不可预知的事情,比如调用其它软件,从网络抓取信息,可能某个函数会卡在某个地方不动态,这段代码可以用来限制函数的执行时间,只需要在函数的上方添加一个装饰器,timelimited(2)就可以限定函数必须在2秒内执行完成,如果执行完成则返回函数正常的返回值,如果执行超时则会抛出错误信息. # -*- coding: utf-8 -*- from threading imp

  • python求最大值,不使用内置函数的实现方法

    利用python进行求解,求解的要求是不能使用python内部封装好的函数例如:max way1: def findmax(data,n): if n==1: return data[0] else: maxi=data[0] for i in data[1:]: if maxi<i: maxi=i return maxi data=[1,2,34,4] print(findmax(data,len(data))) code result: 34 way2: def getMax(arr): f

  • shell 使用数组作为函数参数的方法(详解)

    因工作需要,需要使用shell开发一些小工具,当使用数组作为函数参数时,发现只能传递数组的第一个元素,数组后面的元素不能传递到函数内. #!/bin/bash function showArr(){ arr=$1 for i in ${arr[*]}; do echo $i done } regions=("GZ" "SH" "BJ") showArr $regions exit 0 把代码保存为test.sh后执行,只输出了第一个元素. ./t

  • PHP实现动态获取函数参数的方法示例

    本文实例讲述了PHP实现动态获取函数参数的方法.分享给大家供大家参考,具体如下: PHP 在用户自定义函数中支持可变数量的参数列表.其实很简单,只需使用 func_num_args() , func_get_arg() ,和 func_get_args()  函数即可. 可变参数并不需要特别的语法,参数列表仍按函数定义的方式传递给函数,并按通常的方式使用这些参数. 1. func_num_args - 返回传入函数的参数总个数 int func_num_args ( void ) 示例 <?ph

  • Python OpenCV寻找两条曲线直接的最短距离

    本文实例为大家分享了Python OpenCV两条曲线直接最短距离的寻找方法,供大家参考,具体内容如下 import numpy as np import math import cv2 def cal_pt_distance(pt1, pt2):   dist = math.sqrt(pow(pt1[0]-pt2[0],2) + pow(pt1[1]-pt2[1],2))   return dist font = cv2.FONT_HERSHEY_SIMPLEX img = cv2.imrea

  • 详解C++编程中用数组名作函数参数的方法

    C++数组的概念 概括地说:数组是有序数据的集合.要寻找一个数组中的某一个元素必须给出两个要素,即数组名和下标.数组名和下标惟一地标识一个数组中的一个元素. 数组是有类型属性的.同一数组中的每一个元素都必须属于同一数据类型.一个数组在内存中占一片连续的存储单元.如果有一个整型数组a,假设数组的起始地址为2000,则该数组在内存中的存储情况如图所示. 引入数组就不需要在程序中定义大量的变量,大大减少程序中变量的数量,使程序精炼,而且数组含义清楚,使用方便,明确地反映了数据间的联系.许多好的算法都与

随机推荐