【发布时间】:2021-04-29 15:28:34
【问题描述】:
我是 OpenCV 的新手,我刚刚阅读了 cv2.adaptiveThreshold() 并决定尝试一下。
可悲的是,我似乎无法摆脱这种巨大的噪音。
有哪些有效的方法可以减少噪点,以便绘制正确的轮廓?最佳做法是什么?为什么?
这里是sn-p:
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
【问题讨论】:
标签: python numpy opencv computer-vision threshold