我正在尝试使用面部检测应用程序进行测试,但是运行脚本时出现错误cannot connect to X server
。如果删除cv2.imshow("Output",image)
函数,一切正常。有什么想法可以解决这个问题吗?这是我正在使用的脚本:
from tensorflow.keras.applications.mobilenet_v2 import preprocess_input
from tensorflow.keras.preprocessing.image import img_to_array
from tensorflow.keras.models import load_model
import numpy as np
import argparse
import cv2
import os
def mask_image():
ap = argparse.ArgumentParser()
ap.add_argument("-i","--image",required=True,help="path to input image")
ap.add_argument("-f","--face",type=str,default="face_detector",help="path to face detector model directory")
ap.add_argument("-m","--model",default="mask_detector.model",help="path to trained face mask detector model")
ap.add_argument("-c","--confidence",type=float,default=0.5,help="minimum probability to filter weak detections")
args = vars(ap.parse_args())
prototxtPath = os.path.sep.join([args["face"],"deploy.prototxt"])
weightsPath = os.path.sep.join([args["face"],"res10_300x300_ssd_iter_140000.caffemodel"])
net = cv2.dnn.readNet(prototxtPath,weightsPath)
image = cv2.imread(args["image"])
orig = image.copy()
(h,w) = image.shape[:2]
blob = cv2.dnn.blobFromImage(image,1.0,(300,300),(104.0,177.0,123.0))
net.setInput(blob)
detections = net.forward()
for i in range(0,detections.shape[2]):
confidence = detections[0,i,2]
if confidence > args["confidence"]:
box = detections[0,3:7] * np.array([w,h,w,h])
(startX,startY,endX,endY) = box.astype("int")
(startX,startY) = (max(0,startX),max(0,startY))
(endX,endY) = (min(w - 1,endX),min(h - 1,endY))
face = image[startY:endY,startX:endX]
face = cv2.cvtColor(face,cv2.COLOR_BGR2RGB)
face = cv2.resize(face,(224,224))
face = img_to_array(face)
face = preprocess_input(face)
face = np.expand_dims(face,axis=0)
color = (0,255)
cv2.rectangle(image,(startX,startY),(endX,endY),color,2)
cv2.imshow("Output",image)
cv2.waitKey(0)
if __name__ == "__main__":
mask_image()