如何解决openCV:在 Python 中使用 rtsp 访问 IP 摄像机时出错
进口
let [isAuth,setIsAuth]=useState( false )
return (
<>
{
isAuth ? <Switch>
<Route exact path={"/"} component={ Home } />
<Route exact path={"/shopping-card"} component={ShoppingCard} />
<Route exact path={"/order-success"} component={ OrderSuccess } />
<Route exact path={"/orders"} component={ Orders } />
<Route exact path={"/products"} component={ Products } />
<Redirect to={"/user/login"} />
</Switch> : <Switch>
<Route exact path={"/user/signup"} component={ Signup } />
<Route exact path={"/user/login"} component={ Login } />
<Redirect to={"/user/login"} />
</Switch>
}
</>
)
}
export default Layout
程序变量和打印语句
import face_recognition
import os
import cv2
import pickle
import time
import smtplib
import dotenv
from datetime import date
加载已知的人脸编码
dotenv.load_dotenv()
KNOWN_FACES_DIR = 'known_faces'
FACES_DIR = "Faces"
# UNKNOWN_FACES_DIR = 'unknown_faces'
TOLERANCE = 0.7
FRAME_THICKNESS = 3
FONT_THICKNESS = 2
MODEL = 'cnn'
print("Getting Video Feed...")
video_stream = cv2.VideoCapture(f"rtsp://{os.getenv('USERNAME')}:
{os.getenv('PASSWORD_')}@{os.getenv('IP')}:{os.getenv('PORT')}/{os.getenv('NUM')}")
print("Video Feed Accessed...")
创建 ID
print('Loading known faces...')
known_faces = []
known_names = []
t = time.localtime()
system_time = time.strftime("%I:%M:%S",t)
try:
os.mkdir(f"Logs/{str(date.today())}")
except FileExistsError:
pass
for name in os.listdir(KNOWN_FACES_DIR):
# Next we load every file of faces of known person
for filename in os.listdir(f'{KNOWN_FACES_DIR}/{name}'):
encoding = pickle.load(open(f'{KNOWN_FACES_DIR}/{name}/{filename}','rb'))
known_faces.append(encoding)
known_names.append(int(name))
寻找未知面孔
if len(known_names) > 0:
next_id = max(known_names) + 1
else:
next_id = 0
counter = 0
这是我得到的错误
print('Processing unknown faces...')
while True:
ret,image = video_stream.read()
counter = counter + 1
locations = face_recognition.face_locations(image,model=MODEL)
encodings = face_recognition.face_encodings(image,locations)
print(f'found {len(encodings)} face(s)')
for face_encoding,face_location in zip(encodings,locations):
# We use compare_faces (but might use face_distance as well)
# Returns array of True/False values in order of passed known_faces
results = face_recognition.compare_faces(known_faces,face_encoding,TOLERANCE)
# Since order is being preserved,we check if any face was found then grab index
# then label (name) of first matching known face withing a tolerance
match = None
if True in results: # If at least one is true,get a name of first of found labels
match = known_names[results.index(True)]
print(f'Located ID {match} - {results}')
pickle.dump(face_encoding,open(f"{KNOWN_FACES_DIR}/{match}/{match}-{system_time.replace(':','_')}.pkl",'wb'))
server.sendmail(str(os.getenv('EMAIL')),str(os.getenv('TO')),f"ID {match} is at the front door")
print("Sent Alert.")
with open(f"Logs/{str(date.today())}/{str(date.today())}.log",'a') as f:
f.write(f'Located ID {match}')
f.write("\n")
f.close()
cv2.imwrite(f"Captures/ID_{match}_{str(date.today())}_{str(counter)}.png",image)
else:
match = str(next_id)
next_id += 1
known_names.append(match)
known_faces.append(face_encoding)
os.mkdir(f"{KNOWN_FACES_DIR}/{match}")
pickle.dump(face_encoding,open(f"{KNOWN_FACES_DIR}/{match}/{match}-{int(time.time())}.pkl",'wb'))
print("Sent Alert.")
with open(f"Logs/{str(date.today())}/{str(date.today())}.log",'a') as f:
f.write(f"New ID detected ID {match}")
f.write("\n")
f.close()
cv2.imwrite(f"Captures/ID_{match}_{str(date.today())}_{str(counter)}",image)
cv2.imshow("Archer",image)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cv2.waitKey(0)
您忘记Traceback (most recent call last):
File "C:/Users/smith/Desktop/ArcherSurvalince/Montitor.py",line 79,in <module>
locations = face_recognition.face_locations(image,model=MODEL)
File "C:\Users\smith\Desktop\ArcherSurvalince\venv\lib\site-packages\face_recognition\api.py",line
119,in face_locations
return [_trim_css_to_bounds(_rect_to_css(face.rect),img.shape) for face in _raw_face_locations(img,number_of_times_to_upsample,"cnn")]
File "C:\Users\smith\Desktop\ArcherSurvalince\venv\lib\site-packages\face_recognition\api.py",line
103,in _raw_face_locations
return cnn_face_detector(img,number_of_times_to_upsample)
TypeError: __call__(): incompatible function arguments. The following argument types are supported:
1. (self: _dlib_pybind11.cnn_face_detection_model_v1,imgs: list,upsample_num_times: int=0,batch_size: int=128) -> std::vector<std::vector<dlib::mmod_rect,std::allocator<dlib::mmod_rect>
>,std::allocator<std::vector<dlib::mmod_rect,std::allocator<dlib::mmod_rect> > > >
2. (self: _dlib_pybind11.cnn_face_detection_model_v1,img: array,upsample_num_times: int=0) ->
std::vector<dlib::mmod_rect,std::allocator<dlib::mmod_rect> >
Invoked with: <_dlib_pybind11.cnn_face_detection_model_v1 object at 0x0000026F4F29ADB0>,None,1
了吗?或者
我已经安装了 Pybind11,但我不知道如何修复它。
这似乎只发生在我尝试访问我的 IP 摄像头时 我可以很好地访问我的电脑摄像头,我拥有所有 安装的依赖项
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。