opencv 如何修复“运行时错误:无法打开形状_预测_68_脸_landmarks. dat”,而使用谷歌colab?

tpgth1q7  于 2023-03-09  发布在  其他
关注(0)|答案(3)|浏览(345)

我在Google协作室中编写以下Python代码时遇到错误:

    • 代码**:
import cv2
import dlib

cap = cv2.VideoCapture(0)

hog_face_detector = dlib.get_frontal_face_detector()

dlib_facelandmark = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")

while True: _,
frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

faces = hog_face_detector(gray)
for face in faces:

    face_landmarks = dlib_facelandmark(gray, face)

    for n in range(0, 16):
        x = face_landmarks.part(n).x
        y = face_landmarks.part(n).y
        cv2.circle(frame, (x, y), 1, (0, 255, 255), 1)

cv2.imshow("Face Landmarks", frame)

key = cv2.waitKey(1)
if key == 27:
    break
cap.release()
cv2.destroyAllWindows()
    • 错误**:

运行时错误追溯(最近调用最后)in()6 hog_face_detector = dlib. get_frontal_face_detector()7----〉8 dlib_facelandmark = dlib. shape_predictor("shape_predictor_68_face_landmarks. dat")9 10为真时:
运行时错误:无法打开文件夹

chy5wohz

chy5wohz1#

您的笔记本无法打开文件shape_predictor_68_face_landmarks.dat。这可能是因为该文件未上载到您的笔记本,或者您在dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")中指定的路径错误。
下面是一个自动下载bzip2文件,提取它并将其设置为形状预测器的代码编辑。您可以通过更改!wget的链接来使用不同的.dat文件。

单元格1:

!wget   http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2 # DOWNLOAD LINK

!bunzip2 /content/shape_predictor_68_face_landmarks.dat.bz2

datFile =  "/content/shape_predictor_68_face_landmarks.dat"

单元格2:

import cv2 
import dlib

cap = cv2.VideoCapture(0)

hog_face_detector = dlib.get_frontal_face_detector()

dlib_facelandmark = dlib.shape_predictor(datFile)

while True: _, 
frame = cap.read() 
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

faces = hog_face_detector(gray)
for face in faces:

    face_landmarks = dlib_facelandmark(gray, face)

    for n in range(0, 16):
        x = face_landmarks.part(n).x
        y = face_landmarks.part(n).y
        cv2.circle(frame, (x, y), 1, (0, 255, 255), 1)

cv2.imshow("Face Landmarks", frame)

key = cv2.waitKey(1)
if key == 27:
    break
cap.release() 
cv2.destroyAllWindows()

此外,请注意,如果您在Jupyter笔记本电脑上使用cv2.VideoCapture(0)打开摄像头,它将无法工作,因为代码运行在某个远程服务器上,而不是您的计算机上。查看此处的代码片段,了解如何在Colab中访问您的本地摄像头。

zbdgwd5y

zbdgwd5y2#

对我来说,解决类似问题的方法是下载Anaconda 3并按照下面的指导安装dlib:https://learnopencv.com/install-dlib-on-windows/
我还将项目解释器更改为Anaconda(我使用PyCharm)

9lowa7mx

9lowa7mx3#

添加操作系统模块

导入操作系统

然后创建变量pwd

pwd =操作系统.路径.目录名(文件

然后将pwd变量放在文件的url之前

预测值=数据库.形状预测值(密码+'/shape_predictor_68_fac_landmarks.dat')

相关问题