如何使Open CV在已部署的Web应用程序上工作

我有一个可以在本地运行的应用程序,并打开网络摄像头,然后检测二维码。当我在本地运行该应用程序时,它运行良好,但随后在Web服务器上使用了该应用程序,却收到服务器错误(500)。

该应用程序是在Django上制作的,然后为了进行部署,我使用了数字海洋(ubuntu),还使用了nginx和gunicorn。

html

<li style= "margin: auto; width:auto"><a style="color:white" href="{% url 'attendees:qrscanner' %}" target="_blank"><button style="margin:15px; width:200px" class="btn btn-outline-primary">Check QR Scanner</button></a></li>

views.py

from django.shortcuts import get_object_or_404,render,redirect
from django.utils import timezone
from django.db.models import Sum
from .models import Attendee,activityLog

import re,qrcode,cv2,csv,io,os
import numpy as np
import pyzbar.pyzbar as pyzbar

def qrscanner(request):
    cap = cv2.VideoCapture(0)
    font = cv2.FONT_HERSHEY_PLAIN

    frame_width = int(cap.get(3))
    frame_height = int(cap.get(4))

    aid = None

    while aid is None:
        _,frame = cap.read()

        decodedObjects = pyzbar.decode(frame)

        for obj in decodedObjects:
            aid = re.findall('/attendees/confirmation/([0-9]+)',str(obj.data))
            try:
                attendee = Attendee.objects.get(pk=str(aid[0]))
                attendee.present = True
                attendee.timestamp = timezone.now()
                attendee.activity.update_or_create(time_log=attendee.timestamp)
                attendee.save()
                context = {
                    'scan': 'QR Successfully Scanned','attendee': attendee,}
            except:
                context = {
                    'noscan': 'QR Scan Unsuccessful'
                }


        cv2.imshow("QR Reader",frame)

        if aid is not None:
            cv2.destroyAllWindows()
            break

        key = cv2.waitKey(1) & 0xFF
        if key == 27:
            context = {
                'noscan': 'No QR Scanned',}
            cv2.destroyAllWindows()
            break

    return render(request,'attendees/qrscanner.html',context)

预期结果: -与当我的应用程序在本地运行时一样,我转到包含该应用程序的站点,单击qr扫描仪按钮,“ cap = cv2.VideoCapture(0)”使用计算机的摄像头打开一个框架以检测qr。 / p>

实际结果: -就本地而言,一切都很好,我单击qr扫描仪按钮,然后使用计算机摄像头检测到qr,“ cap = cv2.VideoCapture(0)”打开一个帧。 在我的网站上,一旦我访问了应用程序的该部分,就会收到服务器错误(500)。

注意: -我必须通过点子为在线应用安装一些其他文件,以使该应用显示一些html,并且网站上还有其他应用。 本地安装的库(点​​冻结):

colorama==0.4.1
dj-database-url==0.5.0
Django==2.2.3
django-qr-code==1.0.0
django-widget-tweaks==1.4.5
docutils==0.15.2
mysqlclient==1.4.2
numpy==1.17.0
opencv-python==4.1.0.25
pathlib==1.0.1
Pillow==6.0.0
python-decouple==3.1
pytz==2019.1
pyzbar==0.1.8
qrcode==6.1
six==1.12.0
sqlparse==0.3.0

已在网站中安装图书馆(冻结点):

beautifulsoup4==4.8.0
certifi==2019.9.11
chardet==3.0.4
cycler==0.10.0
demjson==2.2.4
Django==2.2.6
django-authentication==3.2
django-qr==2.0
django-realestate==4.0
django-widget-tweaks==1.4.5
gunicorn==19.9.0
idna==2.8
jtutils==0.0.6
kiwisolver==1.1.0
leven==1.0.4
matplotlib==3.1.1
nose==1.3.7
numpy==1.17.2
opencv-python==4.1.1.26
opencv-python-headless==4.1.1.26
pandas==0.25.1
Pillow==6.2.0
pkg-resources==0.0.0
psycopg2==2.8.3
psycopg2-binary==2.8.3
pyparsing==2.4.2
python-csv==0.0.11
python-dateutil==2.8.0
pytz==2019.2
pyzbar==0.1.8
qrcode==6.1
requests==2.22.0
six==1.12.0
soupsieve==1.9.4
sqlparse==0.3.0
urllib3==1.25.6
xlrd==1.2.0
xmltodict==0.12.0
zhangyansong 回答:如何使Open CV在已部署的Web应用程序上工作

问题是 cap = cv2.VideoCapture(0)实际上是在尝试将应用程序部署到的服务器上打开网络摄像头,而不是在计算机上打开网络摄像头。

,

Here是为此的实际javascript指南

Git Source

本文链接:https://www.f2er.com/3166982.html

大家都在问