IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Opencv全局二值化和局部二值化(python实现) -> 正文阅读

[人工智能]Opencv全局二值化和局部二值化(python实现)

1.前置知识

(1).什么是形态学处理

形态学图像处理(简称形态学)是指一系列处理图像形状特征的图像处理技术,其基本思想是利用一些特殊的结构元来测量或提取图像中相应的形状和特征,以便进一步进行图像分析和处理。
(1)基于图形形态进行处理的一些基本方法;
(2)这些处理方法基本是对二进制图像进行处理;
(3)卷积核决定着图像处理后的效果;

https://zhuanlan.zhihu.com/p/110787009

(2).形态学图像处理

(1)顶帽;
(2)黑帽


2.二值化

(1)全局二值化

将图像的每个像素值变成两种值,如0,255;也就是将整个图像呈现出明显的黑白效果的过程。在数字图像处理中,二值图像占有非常重要的地位,图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。

1)函数

函数:threshold(src, thresh, maxval, type, dst=None):
Src:输入的原始图像;(最好是灰度图);
Thresh:设置的阈值
Maxval:当图像中的像素值大于该阈值时,使用maxval值代替
Type:阈值设置的类型
Dst:输出图像

2)阈值类型

在这里插入图片描述
在这里插入图片描述
这里分别对应上面的五种类型讲解


3)代码实战

import os
import cv2
import numpy as np

def Threshold(img_path='images/lenna.png'):
    img_src=cv2.imread(img_path)
    img=cv2.resize(src=img_src,dsize=(450,450))
    img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    ret,img=cv2.threshold(src=img,thresh=100,maxval=255,type=cv2.THRESH_BINARY)
    cv2.imshow('img_src',img_src)
    cv2.imshow('img',img)
    print('ret: {}'.format(ret))
    cv2.waitKey(0)
    cv2.destroyAllWindows()

def detectTimeThreshold():
    cap=cv2.VideoCapture(0)
    while cap.isOpened():
        OK,frame=cap.read()
        img = cv2.resize(src=frame, dsize=(450, 450))
        img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        ret, img = cv2.threshold(src=img, thresh=100, maxval=255, type=cv2.THRESH_BINARY)

        cv2.imshow('img', img)
        #获取鼠标和键值
        if cv2.waitKey(1)&0XFF==27:
            break
        
    cap.release()
    cv2.destroyAllWindows()

if __name__ == '__main__':
    print('Pycharm')
    # Threshold()
    detectTimeThreshold()

在这里插入图片描述


(2)局部二值化(自适应阈值)

由于光照不均匀以及阴影的存在,只有一个阈值会使得在阴影处的白色被二值化为黑色,所以提出局部二值化。在局部范围内根据特定算法算出局部的阀值,这个局部的大小可以自己决定,例如5x5.本文所用的用法是局部平局的灰度值作为阀值。得到局部阀值再进行局部二值化处理。

1)函数

:adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C, dst=None):
Src:输入的原始图像
maxValue;设置的阈值
adaptiveMehtod:计算阈值的方法
ADAPTIVE_THRESH_MEAN_C:计算邻近区域的平均值(窗口内的所有值求和取平均);
ADAPTIVE_THRESH_GAUSSIAN_C:高斯窗口加权平均值(越靠近中心的权重越高);

thresholdType;设置阈值的类型
blockSize:邻近区域的大小,如3,5,7
C:常量,应从计算出的平均值或加权平均值中减去
Dst:输出图像

2)阈值类型

在这里插入图片描述
T(x,y)是为每个像素单独计算的阈值。

import os
import cv2
import numpy as np

def adaptiveThreshold(img_path='images/lenna.png'):
    img_src=cv2.imread(img_path)
    img=cv2.resize(src=img_src,dsize=(450,450))
    img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    img=cv2.adaptiveThreshold(src=img,maxValue=100,adaptiveMethod=cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
                                  thresholdType=cv2.THRESH_BINARY,blockSize=3,C=0)
    cv2.imshow('img_src',img_src)
    cv2.imshow('img',img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

def detectTimeApativeThreshold():
    cap=cv2.VideoCapture(0)
    while cap.isOpened():
        OK,frame=cap.read()
        img = cv2.resize(src=frame, dsize=(450, 450))
        img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        img = cv2.adaptiveThreshold(src=img,maxValue=100,adaptiveMethod=cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
                                         thresholdType=cv2.THRESH_BINARY,blockSize=3,C=0)

        cv2.imshow('img', img)
        #获取鼠标和键值
        if cv2.waitKey(1)&0XFF==27:
            break

    cap.release()
    cv2.destroyAllWindows()

if __name__ == '__main__':
    print('Pycharm')
    # adaptiveThreshold()
    detectTimeApativeThreshold()

在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-06-16 21:42:28  更:2022-06-16 21:42:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:46:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码