python+openCV图像处理(十六)二值化阈值

54 篇文章 13 订阅
import cv2 as cv
import numpy as np

def threshold_demo(image):
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    ret, binary = cv.threshold(gray, 127, 255, cv.THRESH_BINARY|cv.THRESH_OTSU)
    print("threshold value %s"%ret)
    cv.imshow("threshold_binary", binary)

def local_threshold(image):#自适应阈值二值化
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    binary = cv.adaptiveThreshold(gray, 255, cv.ADAPTIVE_THRESH_GAUSSIAN_C, cv.THRESH_BINARY, 25, 10)
    cv.imshow("local_threshold_binary", binary)

def custom_threshold(image):#自定义二值化
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    h, w = gray.shape[:2]
    m = np.reshape(gray, [1, w*h])
    mean = m.sum() / (w*h)
    print("mean : ", mean)
    ret, binary = cv.threshold(gray, mean, 255, cv.THRESH_BINARY)
    cv.imshow("custom_threshold_binary", binary)

src = cv.imread("D:/vcprojects/images/case2.png")

cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)

threshold_demo(src)
local_threshold(src)
custom_threshold(src)
cv.waitKey(0)

cv.destroyAllWindows()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用PythonOpenCV进行图像处理的例子: 首先,确保已经安装了PySimpleGUI、cv2和numpy库文件。可以使用以下命令通过pip安装它们: ```shell pip install pysimplegui pip install opencv-python pip install numpy ``` 然后,设计GUI界面。可以使用PySimpleGUI库来实现GUI可视。以下是一个简单的GUI设计示例: ```python import PySimpleGUI as sg # 创建GUI窗口 layout = [[sg.Image(key='image')]] window = sg.Window('Image Processing', layout, finalize=True) # 打开内置摄像头 cap = cv2.VideoCapture(0) while True: event, values = window.read(timeout=0, timeout_key='timeout') # 实时读取图像 ret, frame = cap.read() # GUI实时更新 imgbytes = cv2.imencode('.png', frame)[1].tobytes() window['image'].update(data=imgbytes) if event == sg.WINDOW_CLOSED: break window.close() ``` 这段代码创建了一个名为"Image Processing"的GUI窗口,其中包含一个用于显示图像的图像框。通过打开内置摄像头,可以实时读取图像,并将其显示在GUI窗口中。当用户关闭窗口时,程序退出。 4、实时图像处理 4.1、阈值 阈值是一种常用的图像处理技术,可以将图像转换为黑白二图像。以下是一个简单的阈值示例: ```python # 读取图像 image = cv2.imread('image.jpg', 0) # 阈值 _, binary_image = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY) # 显示结果 cv2.imshow('Binary Image', binary_image) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在这个例子中,首先使用cv2.imread()函数读取一张灰度图像。然后,使用cv2.threshold()函数将图像进行阈值处理。最后,使用cv2.imshow()函数显示二后的图像。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值