cv2.threshold() 阈值:使用Python,OpenCV进行简单的图像分割

news/2024/9/22 13:41:47

图像分割有多种形式。 聚类、压缩、边缘检测、区域增长、图分区、分水岭等等;(Clustering. Compression. Edge detection. Region-growing.
Graph partitioning. Watershed. The list goes on.)

但是最开始只有最基本的一种:就是本文中介绍的 threholding 阈值化
一定要尝试设置thresh,因为它会根据您提供的thresh值给出不同的结果。

参考:Thresholding: Simple Image Segmentation using OpenCV

cv2.threhold 函数签名: (T,threshImage)= cv2.threshold(src,thresh,maxval,type)参数:- src:源图像,或我们要对其执行阈值处理的图像。此图像应为灰度。 - thresh:阈值,用于对灰度图像中的像素强度进行分类。 - maxval:方法种用到的阈值; - type: 要使用的阈值方法。可以为:cv2.THRESH_BINARY cv2.THRESH_BINARY_INV  cv2.THRESH_TRUNC    cv2.THRESH_TOZERO  cv2.THRESH_TOZERO_INV1.  cv2.THRESH_BINARY    超过阈值的像素设置为maxVal,不超过的设置为02.  cv2.THRESH_BINARY_INV  1的反转(不超过阈值的像素设置为maxVal,超过的设置为0)3.  cv2.THRESH_TRUNC   超过阈值的设为thresh4.  cv2.THRESH_TOZERO  低于阀值的设为05.  cv2.THRESH_TOZERO_INV   (低于阀值的设为maxVal)返回值:- T: 用于阈值化的值,同thresh- threshImage: 阈值化后生成的图像

原图:
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

# python threshold.py --image images/skateboard_decks.png --threshold 245
import argparse
import cv2# --image 是我们要阈值的图像的路径。
# --threhold 是将要传递到cv2.threshold的阈值
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required=True,help="Path to the image to be thresholded")
ap.add_argument("-t", "--threshold", type=int, default=128,help="Threshold value")
args = vars(ap.parse_args())
# 加载图片并灰度化【 转换为灰度,期望一个单通道图像。】
image = cv2.imread(args["image"])
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 定义我们的阈值方法列表
methods = [("THRESH_BINARY", cv2.THRESH_BINARY),("THRESH_BINARY_INV", cv2.THRESH_BINARY_INV),("THRESH_TRUNC", cv2.THRESH_TRUNC),("THRESH_TOZERO", cv2.THRESH_TOZERO),("THRESH_TOZERO_INV", cv2.THRESH_TOZERO_INV)]
# 遍历阈值方法
for (threshName, threshMethod) in methods:#  将255(白色)作为阈值测试时的值作为第三个参数(T, thresh) = cv2.threshold(gray, args["threshold"], 255, threshMethod)cv2.imshow(threshName, thresh)cv2.waitKey(0)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pgtn.cn/news/17483.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

文件读写操作

如图&#xff0c;点击选择文件则读取文件路径&#xff0c;读取时将文件内容显示到文本框中&#xff0c;写入时将文本框内容写入文件 View Code namespace 文件操作{ public partial class Form1 : Form { public Form1() { InitializeComponent(); }/// <summary>/// 选…

Python OpenCV分水岭算法分割和提取重叠或有衔接的图像中的对象

本文将介绍如何使用分水岭算法对触摸和重叠的图像中的对象进行分割和提取。 参考&#xff1a;https://www.pyimagesearch.com/2015/11/02/watershed-opencv/ 分水岭算法是一种分割的经典算法&#xff0c;在提取图像中连接或重叠的图像中的对象&#xff08;例如上图中的硬币&…

ubuntu18.04上安装TensorFlow2.0

推特上几乎每天都有关于深度学习中Keras、TensorFlow哪个个才是最好的框架的口水战。2019年后&#xff0c;这将不在是个问题。 2019年初&#xff0c;tf.keras 子模块已引入TensorFlow v1.10.0中。 现在&#xff0c;在TensorFlow 2.0中&#xff0c;Keras是TensorFlow的官方高级A…

docker 镜像容器导入导出、查看日志、拷贝文件命令

1. 本地文件拷贝到docker 容器中&#xff0c;参考 docker cp /root/pcl-pcl-1.8.1.tar.gz 7ff95b333e12:/docker cp /root/lib64_a 7ff95b333e12:/2. docker从容器里面拷文件到宿主机 docker cp 容器名&#xff1a;要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径 d…

h5 video视频播放的同时加水印,图片加水印同样的原理

经常能看到播放视频的网站上加水印的效果,记录下成果以备后续看: 效果图如下: h5页面视频播放的同时加水印,有以下3种方法可尝试: 在原视频上添加,由于每次登陆的用户不一样,需要根据用户名动态确定水印的文本值。这并不现实;捕捉视频的每一帧,重新画在画布上,并添…

使用Python、OpenCV计算轮廓的中心

1. 使用Python、OpenCV计算轮廓的中心并标记 2. 使用Python、OpenCV检测轮廓的形状并标记 3. 使用颜色通道统计信息来标记形状的实际颜色并标记 本博客的目标:(1)检测图像中每个形状的轮廓,然后(2)计算轮廓的中心-也称为质心。 计算轮廓/形状区域的中心;仅使用轮廓属…

使用Python,OpenCV读取视频文件流/摄像头流的每一帧,修改后写入视频

使用OpenCV 3将视频写入文件&#xff0c;并保存在自己的磁盘上 尝试支持avi、MP4文件格式的写入&#xff0c;俩种文件的编码格式不一致 codec: MJPG output: example.avi codec: MP4V output: baby.mp4 但是&#xff0c;如果您尝试在自己的应用程序中将视频编写为使用OpenCV归档…

Enterprise Architect 中文经典教程

一、Enterprise Architect简介Enterprise Architect是一个对于软件系统开发有着极好支持的CASE软件&#xff08;Computer Aided Software Engineering&#xff09;。EA不同于普通的UML画图工具&#xff08;如VISIO&#xff09;&#xff0c;它将支撑系统开发的全过程。在需求分析…