问题描述
我对 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 = (7,7)
#######################################################################
def empty(a):
pass
cv2.namedWindow("TrackBars")
cv2.resizeWindow("TrackBars",640,240)
cv2.createTrackbar("cVal","TrackBars",10,40,empty)
cv2.createTrackbar("bSize",77,154,empty)
def preprocessing(frame,value_BSize,cVal):
imgGray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
# mask = cv2.inRange(imgHsv,lower,upper)
imgBlurred = cv2.GaussianBlur(imgGray,kernel,4)
gaussC = cv2.adaptiveThreshold(imgBlurred,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY_INV,cVal)
imgDial = cv2.dilate(gaussC,iterations=3)
imgErode = cv2.erode(imgDial,iterations=1)
return imgDial
def getContours(imPrePro):
contours,hierarchy = cv2.findContours(imPrePro,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)
for cnt in contours:
area = cv2.contourArea(cnt)
if area > 60:
cv2.drawContours(imgCon,cnt,-1,(0,0),2,cv2.FONT_HERSHEY_SIMPLEX)
peri = cv2.arcLength(cnt,True)
approx = cv2.approxPolyDP(cnt,0.02 * peri,True)
#######################################################################################################
while cap.isOpened():
success,frame = cap.read()
cVal = cv2.getTrackbarPos("cVal","TrackBars")
bVal = cv2.getTrackbarPos("bVal","TrackBars")
value_BSize = cv2.getTrackbarPos("bSize","TrackBars")
value_BSize = max(3,value_BSize)
if (value_BSize % 2 == 0):
value_BSize += 1
if success == True:
frame = cv2.flip(frame,1)
imgCon = frame.copy()
imPrePro = preprocessing(frame,cVal)
getContours(imPrePro)
cv2.imshow("Preprocessed",imPrePro)
cv2.imshow("Original",imgCon)
if cv2.waitKey(1) & 0xFF == ord("q"):
cv2.destroyAllWindows()
break
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)