OpenCV,cherrypy,使用按键在浏览器中显示图像

问题描述 投票:2回答:1

我知道这会有点奇怪,拜托,请问我这个愚蠢的问题,还有一个糟糕的编码风格,因为,我知道一个人不能在构造函数中声明一切并使用它们。

我的目标是上传静态图片内容。我正在使用库opencv'cherrypy'

虽然opencv部分将用于显示图像,使用cherrypy的原因是在浏览器中上传图像,并使用waitKey(0),我想刷新这些图像。

问题是,这不起作用,我知道,设计很差。

我发布这个是因为,我现在已经没有解决方案,并希望得到一些帮助,即使是一个小小的提示也没关系,我会自己更正代码。

这是代码:

import sys
import cherrypy
import cv2
import base64


class Img(object):

    def __init__(self):


        self.plat = sys.platform

        if self.plat == 'win32':

            self.file_dir = "C:\\Users\\user\\Desktop\\fruit\\"

        elif self.plat == 'linux2':

            self.file_dir = "/host/Users/user/Desktop/fruit/"

        print self.plat
        print self.file_dir

        self.img   = cv2.imread(self.file_dir + "orange.jpg")



    @cherrypy.expose

    def index(self):


        self.k = cv2.waitKey(0)

        if self.k == 'w':

            # self.img   = cv2.imread(self.file_dir + "orange.jpg")

            _, data     =  cv2.imencode('.jpeg', self.img)

            jpeg_base64 = base64.b64encode(data.tostring())

            return """
            <html>
            <head>
            <title>Fruit Nutritional Information</title>
            </head>
            <html>
            <body>
            <img src='data:image/jpeg;base64,%s' height = 640 width = 1200 />
            </body>
            </html
            """ % (jpeg_base64)

        elif self.k == ord('q'):
            sys.exit()



if __name__ == '__main__':
    cherrypy.config.update({'server.socket_host': '127.0.0.1', 'server.socket_port':8080 })
    cherrypy.quickstart(Img())
python python-2.7 opencv cherrypy
1个回答
0
投票

您可以提供接受键盘输入的JavaScript文件:serving static content with CherryPy或者只是将JavaScript代码放在HTML代码中的脚本标记内。

© www.soinside.com 2019 - 2024. All rights reserved.