opencv期末练习题(6)附带解析
2024-01-03 06:25:12
滑动块调整图像灰度
import cv2
import numpy as np
"""
滑动块调整图像灰度
1. 读取图片,并转为灰度图
2. 定义启动滑块和阈值滑块
3. 只有启动滑块的值为1时,拖动阈值滑块才生效
4. 根据阈值滑块的值实时对图像进行二值化操作
"""
enable = False
img = cv2.imread("./img.png", 0) # 读取灰度化后的图像,0代表读入灰度图。
def nothing(x): # 滑动条修改后会触发这个事件,我们这个程序不需要所以置空
pass # pass代表啥也不干
def enableButton(x): # 启动滑块触发事件
global enable # 表明引用的事全局变量enable
enable = bool(x) # 根据当前滑块的值设置当前的启动状态
cv2.namedWindow("image")
# 创建调色板滑动条
cv2.createTrackbar('Enable', 'image', 0, 1, enableButton) # 创建是否启用滑块,返回为0-1之间
cv2.createTrackbar('thresh', 'image', 0, 255, nothing) # 创建阈值滑块,范围在0-255之间
new_img = img.copy() # 拷贝一个新图像
while 1:
cv2.imshow("image", new_img)
k = cv2.waitKey(1)
if k == ord('q'): # 如果输入q则退出程序
break
if enable: # 如果当前滑块状态是启动的话,则对图像进行二值化操作
thresh = cv2.getTrackbarPos("thresh", "image") # 获取当前滑块的值
_, new_img = cv2.threshold(img, thresh=thresh, maxval=255, type=cv2.THRESH_BINARY) # 根据滑块的值进行二值化操作
这段代码创建了一个窗口,其中包含一个启用/禁用滑块和一个用于调整阈值的滑块。用户可以通过拖动滑块来实时调整图像的二值化阈值。按下 'q' 键退出程序。
以下是代码的主要步骤:
-
初始化全局变量:
enable
用于标记是否启用二值化操作。 -
读取灰度图像:
img = cv2.imread("./img.png", 0)
。 -
定义两个滑块触发函数:
nothing(x)
为空函数,enableButton(x)
设置enable
变量的值。 -
创建窗口和滑块:使用
cv2.namedWindow
创建窗口,使用cv2.createTrackbar
创建启用滑块和阈值滑块。 -
拷贝一个新图像
new_img
作为显示用。 -
进入死循环,实时显示当前图像,并等待用户的键盘输入。
-
如果用户按下 'q' 键,则退出程序。
-
如果启用了二值化操作,获取当前阈值滑块的值,并根据该值对图像进行二值化操作。二值化结果存储在
new_img
中。
这个程序演示了如何使用 OpenCV 创建一个图像窗口,并通过滑块实时调整图像的二值化阈值。
文章来源:https://blog.csdn.net/weixin_45266691/article/details/135348577
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!