Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python openCL cv2.UMat对象不可编辑_Python_Opencv_Opencl_Odroid - Fatal编程技术网

Python openCL cv2.UMat对象不可编辑

Python openCL cv2.UMat对象不可编辑,python,opencv,opencl,odroid,Python,Opencv,Opencl,Odroid,事实上,我不太明白如何使用这个T-API opencl,而且在文档中还是新手 它使用cv2.UMat来读取.image文件,然后读取它。在我的问题中,我想将opencl T-API用于我的重建器。预测行,因为图像是在流式摄影机时拍摄/处理的 recognizer = cv2.face.LBPHFaceRecognizer_create() #colec = cv2.face.MinDistancePredictCollector() recognizer.read("trainer_data_

事实上,我不太明白如何使用这个T-API opencl,而且在文档中还是新手

它使用cv2.UMat来读取.image文件,然后读取它。在我的问题中,我想将opencl T-API用于我的<代码>重建器。预测行,因为图像是在流式摄影机时拍摄/处理的

recognizer = cv2.face.LBPHFaceRecognizer_create()
#colec = cv2.face.MinDistancePredictCollector()
recognizer.read("trainer_data_array.yml")

labels = {"persons_name":0}
with open("labels.pickle", "rb") as f:
    og_labels = pickle.load(f)
    labels = {v:k for k,v in og_labels.items()}


cap = cv2.VideoCapture(0)

while(True):
    #video cap
    ret, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, scaleFactor=1.5, minNeighbors=5)

    for (x,y,w,h) in faces:
        #print(x,y,w,h)
        roi_gray = gray[y:y+h, x:x+w]
        roy_color = frame[y:y+h, x:x+w]

        #recognize how?

        id_ , conf = recognizer.predict(roi_gray) #some error, some say cuz its opencv 3.1.0 bug 
                                                                #solution : up opencv to 3.3 or just use MinDistancePredictCollector(...)
        if conf>=45 and conf<=85:
            print(idppl)
            print(labels[idppl])
            font = cv2.FONT_HERSHEY_SIMPLEX
            name = labels[idppl]
            color = (255,255,255)
            stroke = 2
            cv2.putText(frame,name,(x,y),font,1,color,stroke,cv2.LINE_AA)
        elif conf > 85:
            print("unknown")
recognizer=cv2.face.LBPHFaceRecognizer\u create()
#colec=cv2.face.MindDistancePredictCollector()
识别器读取(“trainer\u data\u array.yml”)
标签={“人员名称”:0}
打开(“labels.pickle”、“rb”)作为f:
og_标签=pickle.load(f)
labels={v:k代表k,在og_labels.items()中为v
cap=cv2.视频捕获(0)
虽然(正确):
#视频帽
ret,frame=cap.read()
灰色=cv2.CVT颜色(边框,cv2.COLOR\u BGR2GRAY)
faces=face_级联。检测多尺度(灰色,scaleFactor=1.5,minNeighbors=5)
对于面中的(x,y,w,h):
#打印(x、y、w、h)
roi_gray=灰色[y:y+h,x:x+w]
roy_color=frame[y:y+h,x:x+w]
#如何认识?
id_,conf=recognizer.predict(roi_gray)#有些错误,有些人说是因为opencv 3.1.0的缺陷
#解决方案:将opencv升级到3.3或仅使用MinDistancePredictCollector(…)
如果形态>=45和形态85:
打印(“未知”)
有人能帮我怎么做吗,如果只是把它像
id\uu,conf=cv2.UMat(recognizer.predict(roi\u gray))
它给我错误
cv2.UMat'对象不可编辑

在没有T-API mybe的情况下,这一行程序仍然可以提供很好的帧速率,但经过多次修改或实现/处理后,当检测/记录人脸时,它将以低帧速率运行


这就是为什么我想使用OpenCL,所以当它运行在GPU Mybe中会给我一个很好的帧率

也许考虑线程或多重处理- ODROID有4/8个内核。您可以在core 1上连续获取,然后在core 2上处理frame 1,在core 3上处理frame 2,在core 4上处理frame 3,然后在core 2上重新处理frame 4。我还在帧中实现多线程以增加fps,这确实提高了fps,但它仍然不在。。我不知道怎么说,默认fps为普通相机。我只是在想mybe,因为太多的进程在摄影机播放时工作。这就是为什么如果有一种方法,我也想在它上面实现T-API