繁体   English   中英

OpenCV - 自适应阈值/有效降噪?

OpenCV - Adaptive-thresholding / effective noise reduction?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我是 OpenCV 的新手,我刚刚阅读了cv2.adaptiveThreshold()并决定尝试一下。 可悲的是,我似乎无法摆脱如此巨大的噪音。

有哪些有效的方法可以减少噪音,以便我可以绘制正确的轮廓? 什么是最佳实践,为什么?

这是片段:

 import cv2 import numpy as np ##################################### winWidth = 640 winHeight = 840 brightness = 100 cap = cv2.VideoCapture(0) cap.set(3, winWidth) cap.set(4, winHeight) cap.set(10, brightness) kernel = (5, 5) ########################################### def preprocessing(frame): imgGray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # mask = cv2.inRange(imgHsv, lower, upper) imgBlurred = cv2.GaussianBlur(imgGray, kernel, 1) gaussC = cv2.adaptiveThreshold(imgBlurred, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11, 2) imgDial = cv2.dilate(gaussC, kernel, iterations=3) imgErode = cv2.erode(imgDial, kernel, iterations=1) return imgDial def getcontours(imPrePro): contours, hierarchy = cv2.findContours(imPrePro, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE) for cnt in contours: cv2.drawContours(imgCon, cnt, -1, (255, 0, 0), 3) ################################################### while (cap.isOpened()): success, frame = cap.read() if success == True: frame = cv2.flip(frame, 1) imgCon = frame.copy() imPrePro = preprocessing(frame) getcontours(imPrePro) cv2.imshow("Preprocessed", imPrePro) cv2.imshow("Original", imgCon) if cv2.waitKey(1) & 0xFF == ord("q"): break

1 个回复

我认为最好看一下blockSizeC参数。

形成来源

blockSize:用于计算像素阈值的像素邻域的大小:3、5、7 等。

C:从平均值或加权平均值中减去的常数(参见下面的详细信息)。 通常,它是正数,但也可能为零或负数。

在您的示例中,您将C设置为 2:

gaussC = cv2.adaptiveThreshold(imgBlurred, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11, 2)
C=2 C=8
在此处输入图片说明 在此处输入图片说明

如您所见,您需要使用blockSizeC参数才能从自适应阈值中获得所需的结果。

在这个问题中,我们通过增加C参数来减少噪声。

1 Java中的OpenCV自适应阈值

javadoc提到自适应阈值函数的签名为 我需要以某种方式自动为给定特定图像输入blockSize和C (偏移)的值。 因此,我得到了彩色图像,然后将其转换为灰度,然后将自适应阈值用作OCR的预处理步骤。 目前,我对blocksize和C的值进行了硬编码,看看是什么使我获得了更好 ...

2 OpenCV自适应阈值边界

我在OpenCV自适应阈值方面遇到一些问题。 我的图像在深色背景中都有浅色文字,而在浅色背景中则有深色文字,有时在同一张图像中,我可以同时具有两个文字。 当文本在深色背景上为白色时,它会在其周围生成边框,而不是标记文本本身,这是一个示例: 我知道这是自适应阈值应该如何工作 ...

3 opencv中自适应阈值与正常阈值的区别

我有这个灰色的视频流: 该图像的直方图: 阈值图像由: 我得到: 我所期待的。 当我做自适应阈值处理时: 我得到: 这看起来像边缘检测而不是阈值。 我所期待的是黑白区域。 所以我的问题是,为什么这看起来像边缘检测而不是阈值。 thx提 ...

5 OpenCV自适应阈值HSV图像

我们(我和我的小组)希望能够跟踪一只手(主要是食指)。 手的颜色基本上与图片中的脸相同,但是正如您所看到的,我们得到的很多噪音也是如此。 手背有黑色“屏幕”时,效果很好。 现在的问题是,自适应阈值处理仅在灰度图像上有用,因此不能很好地检测到手。 我尝试过搜索HSV自适应阈值,但是 ...

6 降噪OpenCV skindetection样本

我正在研究一个facedetection应用程序,使用在YCrCb空间中使用预定义皮肤模型的皮肤像素分割。 我松散地基于这份报告的算法; Dougie Chai和King N. Ngan撰写的http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumbe ...

7 在opencv中使用直方图减少噪声

我想为RGB图像实现一个简单的噪声校正方案。 该图像在随机位置包含一些垃圾像素。 因此,我正在考虑这样做: 分割图像。 计算每个分段的直方图。 分析直方图并转储段中直方图分布中可忽略的像素。 我正在使用openCV。 我已经实现了步骤1和2,但是我无法找出 ...

2013-03-03 17:22:17 1 797   opencv
9 OpenCV:自适应阈值错误(错误-215)

我尝试在图像上应用Sobel滤波后进行自适应阈值处理,如以下代码所示: 但是,当我尝试进行自适应阈值设置时,出现以下错误: 我已经阅读到如果您的图像不是灰度图像,则会发生此错误,但是,我在代码开始时将图像转换为灰度图像。 我不确定为什么会收到此错误。 任何见解都表示赞赏。 ...

10 OpenCV - 使用凸包和自适应阈值在手指上绘制轮廓

我对 OpenCV 还很陌生,正在尝试使用网络摄像头沿着手部轮廓绘制简单的轮廓。 当相机适应手部移动时,我决定使用cv2.adaptiveThreshold()来处理不同的光强度。 一切似乎都很好,只是它在寻找手指然后绘制闭合轮廓时遇到了困难。 看这里: 我想尝试检测一个凸包,并以某种方式检测 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM