!!!本博客,是对图像的背景颜色的修改的基础讲解~!!!

还包括一个练习——是对背景色修改的一点应用尝试!!!——始终相信学习多一点探索,脚步会更坚定一些~

愿所有正在努力的人都可以坚持自己的路一直走下去!

实现轨迹(跟踪)栏功能的函数

函数主要参数讲解

cv.createTrackbar()——创建一个轨迹(跟踪)栏

cv.getTrackbarPos()——获取一个轨迹(跟踪)栏的值

cv.createTrackbar()参数如下:

参数一:trackbarname——轨迹(跟踪)栏名称

参数二:winname——需要挂载轨迹(跟踪)栏的窗体名

参数三:value——默认值

参数四:count——上限值

参数五:onChange ——轨迹(跟踪)栏的回调执行函数

(一般仅仅是通过轨迹栏修改值,然后读取的话,这个参数可以不用管)参数六:userdata ——作为回调传递的用户数据。它可以在不使用全局变量的情况下处理trackbar事件。

cv.getTrackbarPos()参数如下:

参数一:trackbarname——需要读取的轨迹(跟踪)栏名称

参数二:winname——对应的窗体名

代码实现

我们先创建一个窗体,为轨迹(跟踪)栏的挂载做准备

~照片就默认创建一张黑色图片

import cv2 as cv

import numpy as np

img = np.zeros((512, 512, 3), np.uint8)

cv.namedWindow('imag', cv.WINDOW_NORMAL)

cv.resizeWindow('imag', 510, 510)

接着我们把需要的轨迹(跟踪)栏添加到这个窗体中(记得必须要创建轨迹(跟踪)栏回调函数的!!!)

回调函数可以为pass空函数——但是必须要有!!!

这次要实现背景色的控制,那么我们设置三个轨迹(跟踪)栏,每一个轨迹栏对应一个0~255的值——对应BGR中的三色值!!!

def nothing(x):

pass

# 参数依次为:设置轨迹(跟踪)栏名字,挂载的窗体, 默认值, 最大值,回调函数

cv.createTrackbar('R', 'imag', 0, 255, nothing) # R的值——nothing传入一个空函数体,不执行任何回调函数

cv.createTrackbar('G', 'imag', 0, 255, nothing) # G的值

cv.createTrackbar('B', 'imag', 0, 255, nothing) # B的值

switch = '1:ON\n0:OFF'

cv.createTrackbar(switch, 'imag', 0, 1, nothing)

# 设置一个开关——当为1时,图片背景可以改变——否则为黑色

显示主体部分的代码

while True:

cv.imshow('imag', img)

k = cv.waitKey(1) & 0xFF

if k == 27: # ESC退出

break

if cv.getTrackbarPos(switch, 'imag') == 1: # 当swtch轨迹(跟踪)栏的值为1时,允许改变背景色

img[:] = [cv.getTrackbarPos('B', 'imag'), cv.getTrackbarPos('G', 'imag'), cv.getTrackbarPos('R', 'imag')]

# getTrackbarPos的参数为:读取值的轨迹(跟踪)栏名,所在的窗体名

# opencv的颜色为BGR——依次获取轨迹(跟踪)栏的值就可以了~

else: # 否则为默认黑色

img[:] = 0

cv.destroyAllWindows()

效果

完整代码

import cv2 as cv

import numpy as np

def nothing(x):

pass

if __name__ == "__main__":

img = np.zeros((512, 512, 3), np.uint8)

cv.namedWindow('imag', cv.WINDOW_NORMAL)

cv.resizeWindow('imag', 510, 510)

cv.createTrackbar('R', 'imag', 0, 255, nothing)

cv.createTrackbar('G', 'imag', 0, 255, nothing)

cv.createTrackbar('B', 'imag', 0, 255, nothing)

switch = '1:ON\n0:OFF'

cv.createTrackbar(switch, 'imag', 0, 1, nothing)

while True:

cv.imshow('imag', img)

k = cv.waitKey(1) & 0xFF

if k == 27:

break

if cv.getTrackbarPos(switch, 'imag') == 1:

img[:] = [cv.getTrackbarPos('B', 'imag'), cv.getTrackbarPos('G', 'imag'), cv.getTrackbarPos('R', 'imag')]

else:

img[:] = 0

cv.destroyAllWindows()

效果

默认打开的样子~

此时调节背景色是不改变的~

当打开时,背景色就会发生改变了~

小训

训练要求

我们通过鼠标绘制一些东西,然后将背景颜色的修改,作为图片刷新(清空内容)~

代码结构

鼠标回调函数(包含包的引用)

import cv2 as cv

import numpy as np

drawing = False

line_size = 2

def mouse_function(event, x, y, flags, param): # 鼠标回调函数——执行鼠标左键按下后移动绘图

global drawing, line_size

if event == cv.EVENT_LBUTTONDOWN:

drawing = True

elif event == cv.EVENT_MOUSEMOVE:

if drawing is True:

cv.circle(img, (x, y), line_size, (0, 125, 255), -1, cv.LINE_AA)

elif event == cv.EVENT_LBUTTONUP:

drawing = False

cv.circle(img, (x, y), line_size, (0, 125, 255), -1, cv.LINE_AA)

轨迹(跟踪)栏回调函数

# 这里不需要任何操作~所以用pass空函数体即可

def nothing(x):

pass

__main__主体代码

if __name__ == "__main__":

img = np.zeros((512, 512, 3), np.uint8)

cv.namedWindow('imag', cv.WINDOW_NORMAL)

cv.resizeWindow('imag', 510, 510)

cv.setMouseCallback('imag', mouse_function) # 实现鼠标回调函数

cv.createTrackbar('R', 'imag', 0, 255, nothing) # 设置R轨迹(跟踪)栏

cv.createTrackbar('G', 'imag', 0, 255, nothing)

cv.createTrackbar('B', 'imag', 0, 255, nothing)

switch = '1:ON\n0:OFF'

cv.createTrackbar(switch, 'imag', 0, 1, nothing) # 设置开关控制轨迹(跟踪)栏

while True:

cv.imshow('imag', img)

k = cv.waitKey(1) & 0xFF

if k == 27:

break

if cv.getTrackbarPos(switch, 'imag') == 1: # 为1是,刷新画面

img[:] = [cv.getTrackbarPos('B', 'imag'), cv.getTrackbarPos('G', 'imag'), cv.getTrackbarPos('R', 'imag')]

cv.setTrackbarPos(switch, 'imag', 0) # 通过set轨迹(跟踪)栏位置,实现为1刷新后,及时回到0位置

cv.destroyAllWindows()

效果:(小训练的代码连起来就可以直接运行的,这里就不单独再写一遍了)

先随意用鼠标写“开心”两个字~

接着点击这里(可能需要点一次选中轨迹(跟踪)栏,再点击才能执行变化)

然后就实现刷新了~

我们再写点其它的——

到这里小练习也就结束了——既练习了鼠标事件当作画笔,也实现了轨迹(跟踪)栏的设置和读取——当作画板刷新的功能(●'◡'●)

总结

到此这篇关于Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色的文章就介绍到这了,更多相关Python Opencv更改图像的背景颜色内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

python改背景颜色_Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色相关推荐

  1. Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色(末尾有一个小训练——是将所学得的图像颜色修改应用为画板一般的刷新)

    文章目录 愿所有正在努力的人都可以坚持自己的路一直走下去! 实现轨迹(跟踪)栏功能的函数 函数主要参数讲解 代码实现 我们先创建一个窗体,为轨迹(跟踪)栏的挂载做准备 接着我们把需要的轨迹(跟踪)栏添 ...

  2. Android 主题栏,信息栏,深色信息栏(更改手机顶部显示字体/图标颜色为深色)

    Android 主题栏,信息栏,深色信息栏(更改手机顶部显示字体/图标颜色为深色) activity移除主题栏 Objects.requireNonNull(getSupportActionBar() ...

  3. python更改图片中物体的颜色_Python Opencv提取图片中某种颜色组成的图形的方法...

    Python Opencv提取图片中某种颜色组成的图形的方法 主要目标识别图中红色的裂缝,尝试了几种不同的方法,最后发现比较每一点的RGB差值可以很好的解决这个问题,也就是提取图片中的红色相关信息.处 ...

  4. python相似图片识别_Python+Opencv识别两张相似图片

    Python+Opencv识别两张相似图片 在网上看到python做图像识别的相关文章后,真心感觉python的功能实在太强大,因此将这些文章总结一下,建立一下自己的知识体系. 当然了,图像识别这个话 ...

  5. python识别图片中数字_Python Opencv识别两张相似图片

    在网上看到python做图像识别的相关文章后,真心感觉python的功能实在太强大,因此将这些文章总结一下,建立一下自己的知识体系. 当然了,图像识别这个话题作为计算机科学的一个分支,不可能就在本文简 ...

  6. python人脸照片分类_Python OpenCV 人脸识别(一)

    前面介绍了Numpy模块,下面再介绍一个OpenCV模块,就基于这两个库看一下当下很火的人工智能是如何实现的,我们介绍几个:人脸识别(当下非常火的).音视频操作等等.今天先介绍一下静态图片的人脸识别, ...

  7. python opencv二值化图像_python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘...

    python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘 python opencv 1,读取图像 2,图像变矩阵 3,图像转灰度图像 4,彩色图像是3D数组 5,灰度图像是2 ...

  8. python人脸识别截图_Python OpenCV调用摄像头检测人脸并截图

    本文实例为大家分享了Python OpenCV调用摄像头检测人脸并截图的具体代码,供大家参考,具体内容如下 注意:需要在python中安装OpenCV库,同时需要下载OpenCV人脸识别模型haarc ...

  9. python ocr 识别车牌_python+opencv+TESSERT-OCR实现车牌的检测与识别

    python+opencv+TESSERT-OCR实现车牌的检测与识别 开学花了十天时间0基础搞出来的,分享给大家,如果有什么错误希望大家给我指正.python师从小甲鱼,opencv师从贾志刚,B站 ...

最新文章

  1. python学习--基础
  2. angularjs ngTable -Custom filter template-calendar
  3. iptable 命令
  4. 关于定位的一些知识:
  5. 【Nginx-20180108】Nginx的搭建文件服务器问题一则
  6. ASP.NET入门五步详解
  7. Qt5使用windeployqt后 exe文件还是无法执行 无法定位程序输入点 _ZdaPvj 于动态链接库 libstdc++-6.dll
  8. QueryString加密
  9. Spring框架学习笔记08:基于Java配置方式使用Spring MVC
  10. java using的用法_using的几种用法 C#
  11. python 释放链表节点_redis:链表
  12. Idea修改字体颜色
  13. vue自定义下拉菜单,点击下拉其它空白区域,下拉消失
  14. 如何学习数据库?数据库零基础入门指导
  15. SpringMVC表单标签简介
  16. matlab求含参数一元三次方程,matlab 求解一元三次方程,带其他参数
  17. 2021年中国鸡尾酒杯市场趋势报告、技术动态创新及2027年市场预测
  18. 自玩树莓派记录-关于树莓派LCD3.5英寸屏幕使用及raspios(raspbian)-lite简单GUI服务搭建记录
  19. 揭秘IPHONE X刷脸认证的技术奥秘
  20. Java面试宝典(2021版)

热门文章

  1. ubuntu保护眼睛的设置
  2. 文件的上传下载功能的实现(包括进度条)[telerik控件]
  3. 解开Android应用程序组件Activity的singleTask之谜(3)
  4. rabbitmq添加user及vhost
  5. 浅谈Python-IO多路复用(select、poll、epoll模式)
  6. python程序打包exe
  7. 填写数独 洛谷P1784
  8. mzy git学习,初识git(一)
  9. HDU 2144 (最长连续公共子列 + 并查集) Evolution
  10. win10下添加ssh服务