我正在使用开放式简历跟踪对象。我在互联网上看过代码。在我运行时,它显示出这样的错误。
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)
答案 0 :(得分:1)
检查以下代码
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)
答案 1 :(得分:0)
您的参数顺序错误。您的元组(x,y+h)
位于期望使用字体的位置(如果我没记错的话,字体只是编码为整数)。 putText
期望按以下顺序输入:
Python:cv2.putText(img,text,org,fontFace,fontScale,color [,thickness [,lineType [,bottomLeftOrigin]]]))→无
您只需要匹配此内容。例如:
cv2.putText(img, str(i+1),(x,y+h),font,1,(0,255,255))
答案 2 :(得分:0)
下面是带有放置文本的工作代码。 请从下面参考,并对代码进行必要的更改。
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()