将cv2帧从视图传递到temp

2024-10-03 21:30:09 发布

您现在位置:Python中文网/ 问答频道 /正文

基本上,我的django应用程序需要在视图中创建一个图像,并将其传递给模板。对于字符串来说这很简单,但是我找不到一种方法来处理图像。我读过很多堆栈溢出线程,但是没有一个像我的一样,这是令人惊讶的。在

我尝试着改变我的观点:

视图.py:

def index(request):
  while (True):

    #video_capture = cv2.VideoCapture(0)
    #ret, frame = video_capture.read()

    img = "D:/Desktop/Tap/bsnsFaces.jpg"
    frame = cv2.imread(img)
    facesNumber ="Found {0} faces!".format(len(faces))

    return render(request, 'result.html', {'p': facesNumber}, {'img': frame})`

最后的{'img':frame}部分不在任何靠近右侧的地方。我试了一些我在某处找到的东西,但到目前为止没有任何效果。我知道图像是静态的,但最终我希望这是一个从网络摄像头捕捉的帧,所以我不能用模型来解决这个问题(或者我可以吗?)。在

提前谢谢你的建议!在

^{pr2}$

Tags: django方法字符串图像视图模板应用程序img
1条回答
网友
1楼 · 发布于 2024-10-03 21:30:09

我建议使用base64编码帧并传递该字符串。这样就可以将动态生成的图像从视图传递到结果.html渲染。然后可以在结果.html. 在

视图.py

import cv2
import base64

def index(request):
  #while (True): #Note: This loop is pointless, it will break when you return.

    #video_capture = cv2.VideoCapture(0)
    #ret, frame = video_capture.read()

    img = "D:/Desktop/Tap/bsnsFaces.jpg"
    frame = cv2.imread(img)
    ret, frame_buff = cv2.imencode('.jpg', frame) #could be png, update html as well
    frame_b64 = base64.b64encode(frame_buff)
    facesNumber ="Found {0} faces!".format(len(faces))

    # Note this was fixed to be one dict with the context variables
    return render(request, 'result.html', {'p': facesNumber, 'img': frame_b64})

结果.html

^{pr2}$

只是一个基于while循环的注释,如果你想不断地从网络摄像头更新页面,这应该在客户端完成。否则,您将需要不断刷新页面以查看图像更新。客户(结果.html)可以使用AJAX轮询服务器以获取图像更新,并在不实际重新加载整个结果.html第页。在

相关问题 更多 >