使用threshold方法和adaptivethreshold方法对图像进行阈值分割操作。

1、使用threshold方法,设置一个阈值,将大于阈值的值变换为最大值,小于阈值的值变换为0。

#-*- coding:utf-8 -*-

# opencv 中阈值操作

import cv2
import numpy #读取一张图片
img = cv2.imread('bookback.jpg',cv2.IMREAD_COLOR)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#使用threshold方法进行阈值分割,大于阈值的设置为255,小于阈值的为0
ret,threshold = cv2.threshold(img,10,255,cv2.THRESH_BINARY)
#对灰度图像进行阈值处理
ret1,threshold1 = cv2.threshold(gray,10,255,cv2.THRESH_BINARY)
#显示图像
cv2.imshow('original',img)
cv2.imshow('threshold',threshold)
cv2.imshow('gray_threshold',threshold1)
cv2.waitKey(0)
cv2.destroyAllWindows()

 效果:由上到下依次是:原图、彩色图像阈值分割、灰度图像阈值分割

2、使用adaptivethreshold方法进行阈值分割,该方法使用高斯函数,统计一个小块内的图像信息进行自适应阈值操作。

# -*- coding:utf-8 -*-

# opencv中自适应阈值操作

import cv2
import numpy #读取一张图片
img = cv2.imread('bookback.jpg',cv2.IMREAD_COLOR)
#转换为灰度图像
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#使用自适应阈值处理,源图片,最大值,阈值类型,二值化类型,分块大小,阈值计算中常数
adaptive_thresh = cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,115,1) #显示图片
cv2.imshow('original',img)
cv2.imshow('adaptive_thresh',adaptive_thresh)
cv2.waitKey(0)
cv2.destroyAllWindows()

 效果:由上到下依次是:原图、阈值分割后图像

3、使用otsu方法进行分割,该方法基于直方图统计,通过一个阈值将直方图分为两个部分。

#基于直方图的二值化
ret,thresh = cv2.threshold(gray,40,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)

 效果如下:

opencv图像阈值操作的更多相关文章

  1. opencv——图像掩码操作

    使用opencv通过掩码去扣取图像中感兴趣的区域 步骤: 1.读取一张图片 2.转换颜色格式为hsv 3.设置要扣取区域颜色的上下门限 4.从原始图像中获取感兴趣区域的掩码 5.使用掩码和原始图像做云 ...

  2. opencv::基本阈值操作

    图像阈值(threshold) 阈值 是什么?简单点说是把图像分割的标尺,这个标尺是根据什么产生的,阈值产生算法?阈值类型.(Binary segmentation) 阈值类型一阈值二值化(thres ...

  3. OpenCv图像像素操作

    1:像素 有两种直接操作像素点的方法: 第一种: 将其转化为numpy.array格式,直接进行操作. 第二种:使用Opencv提供的Get1D,Get2D等函数. 2:获取行和列像素 有一下四个函数 ...

  4. python Opencv图像基础操作

    读取并显示图像 如果读取图像首先要导入OpenCV包,方法为: import cv2 读取并显示图像 img = cv2.imread("C:\test1.jpg") OpenCV ...

  5. 2.opencv图像处理常用操作

    图像的平滑处理 平滑,也称 模糊, 平滑处理时需要用到一个滤波器 .滤波器想象成一个包含加权系数的窗口,这个加权系数也叫做核或者模版. // 图像平滑处理分而学之.cpp : 定义控制台应用程序的入口 ...

  6. OpenCV图像处理篇之阈值操作函数

    阈值操作类型 这5种阈值操作类型保留opencv tutorials中的英文名称.依次为: Threshold Binary:即二值化,将大于阈值的灰度值设为最大灰度值.小于阈值的值设为0. Thre ...

  7. OpenCV(4)-图像掩码操作(卷积)--平滑处理

    卷积定义 矩阵的掩码操作即对图像进行卷积.对图像卷积操作的意义为:邻近像素对(包括该像素自身)对新像素的影响:影响大小取决于卷积核对应位置值得大小. 例如:图像增强可以使用 \[ I(i,j)=5*I ...

  8. opencv学习之路(13)、图像阈值化threshold

    一.图像阈值化简介 二.固定阈值 三.自适应阈值 #include<opencv2/opencv.hpp> using namespace cv; void main(){ Mat src ...

  9. 【图像处理】OpenCV+Python图像处理入门教程(七)图像形态学操作

    图像形态学主要从图像内提取分量信息,该分量信息通常对表达图像的特征具有重要意义.例如,在车牌号码识别中,能够使用形态学计算其重要特征信息,在进行识别时,只需对这些特征信息运算即可.图像形态学在目标视觉 ...

随机推荐

  1. kubernetes之kubelet运行机制分析

    kubernetes集群中,每个Node节点工作节点上都会启动一个kubelet服务进程.用于处理master节点下发到本节点的任务,管理pod和pod中的容器.每个kubelet进程都会在API S ...

  2. c#中泛型2

    这篇主要讲解泛型协变与逆变,有不正确的地方欢迎指正: 泛型协变与逆变 “协变”是指能够使用与原始指定的派生类型相比,派生程度更大的类型. “逆变”则是指能够使用派生程度更小的类型. 泛型中的继承需要用 ...

  3. QQ联合登录(基于Oauth2.0协议)

    1. 获取授权码Authorization Code https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id= ...

  4. Lock Free (无锁并发)

    CAS( compare and swap) 原子操作,保证了如果需要更新的地址没有被其他进程(线程)改动过,那么它可以安全的写入.而这也是我们对于某个数据或者数据结构加锁要保护的内容,保证读写的一致 ...

  5. hadoop功能与用途

    1.hadoop是什么? 开源的分布式存储和分布式计算平台. 2.hadoop组成? HDFS:分布式文件存储系统,存储海量数据. Mapreduce:并行处理框架,实现任务分配和调度. 3.hado ...

  6. vue中sessionStorage的使用

    转载:https://www.cnblogs.com/denken/p/11197612.html localStorage 和 sessionStorage 属性允许在浏览器中存储 key/valu ...

  7. docker的容器和镜像的清理

    Docker用户会在使用docker一段时间后发现宿主机的磁盘很容易就快被占满,并且手动docker rmi [imgName]似乎并不能释放磁盘,貌似想删掉的镜像依然在宿主机中,下面针对这一问题提出 ...

  8. AGC037

    Contest page A Tag:贪心 猜想段的长度只会有$1$和$2$(感性理解,应该可以反证--),然后就可以DP/贪心了 B Tag:贪心.组合 考虑如何构造合法方案.从右往左考虑球,因为当 ...

  9. 24H玩转 Grafana 被工程师称相当专业,如何做到?

    国庆假期发生了两件小事,其一是我默默度过 35 周岁生日,其二是玩了下grafana `并在节后第一天被工程师 M 称赞:相当专业. 1.我为什么要玩 grafana 呢? 数月前我提交了一份数据后台 ...

  10. 反射之关于MethodInfo的使用

    1.MethodInfo类是在System.Reflection命名空间底下,既然是在Reflection空间底下.故名思议关于反射相关的操作,其中比较重要的方法是Invoke()方法,它是加载相同程 ...