我正在使用open cv跟踪对象。我在互联网上查了一个代码。在我运行的时候,它显示出这样的错误。
Traceback (most recent call last):
File "/home/pi/Downloads/Pi-tracker-master/obj.py", line 32, in <module>
cv2.putText(img, str(i+1),font,(x,y+h),(0,255,255))
TypeError: an integer is required (got type tuple)
我找到了堆栈溢出here中的错误的一个答案,但我不清楚那个。
我正在使用的代码:
import cv2
import numpy as np
lowerBound=np.array([33,80,40])
upperBound=np.array([102,255,255])
cam= cv2.VideoCapture(0)
kernelOpen=np.ones((5,5))
kernelClose=np.ones((20,20))
font=cv2.FONT_HERSHEY_SIMPLEX,2,0.5,0,3,1
while True:
ret, img=cam.read()
img=cv2.resize(img,(340,220))
#convert BGR to HSV
imgHSV= cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
# create the Mask
mask=cv2.inRange(imgHSV,lowerBound,upperBound)
#morphology
maskOpen=cv2.morphologyEx(mask,cv2.MORPH_OPEN,kernelOpen)
maskClose=cv2.morphologyEx(maskOpen,cv2.MORPH_CLOSE,kernelClose)
maskFinal=maskClose
_,conts,h=cv2.findContours(maskFinal.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE)
cv2.drawContours(img,conts,-1,(255,0,0),3)
for i in range(len(conts)):
x,y,w,h=cv2.boundingRect(conts[i])
cv2.rectangle(img,(x,y),(x+w,y+h),(0,0,255), 2)
cv2.putText(img, str(i+1),font,(x,y+h),(0,255,255))
cv2.imshow("maskClose",maskClose)
cv2.imshow("maskOpen",maskOpen)
cv2.imshow("mask",mask)
cv2.imshow("cam",img)
cv2.waitKey(10)
检查以下代码
font = cv2.FONT_HERSHEY_SIMPLEX
bottomLeftCornerOfText = (10,500)
fontScale = 1
fontColor = (255,255,255)
lineType = 2
cv2.putText(img,'Some text',
bottomLeftCornerOfText,
font,
fontScale,
fontColor,
lineType)
您的参数输入顺序错误。你的元组(x,y+h)
处于预期字体的位置(如果我没记错的话,字体只是编码为整数)。 putText
希望按此顺序输入:
Python:cv2.putText(img,text,org,fontFace,fontScale,color [,thickness [,lineType [,bottomLeftOrigin]]])→None
你只需要匹配这个。例如:
cv2.putText(img, str(i+1),(x,y+h),font,1,(0,255,255))
下面是带有put文本的工作代码。请参考以下内容并对您的代码进行必要的更改。
import cv2
import numpy as np
lowerBound=np.array([33,80,40])
upperBound=np.array([102,255,255])
cam= cv2.VideoCapture('1.mp4')
kernelOpen=np.ones((5,5))
kernelClose=np.ones((20,20))
font = cv2.FONT_HERSHEY_SIMPLEX
bottomLeftCornerOfText = (10,500)
fontScale = 1
fontColor = (255,255,255)
lineType = 2
ret, img = cam.read()
while ret:
img=cv2.resize(img,(340,220))
cv2.putText(img,'Hello World!',
bottomLeftCornerOfText,
font,
fontScale,
fontColor,
lineType)
ret, img=cam.read()