python - 在树莓派2上的临时文件中读取图像

标签 python opencv flask mod-wsgi temporary-files

我整夜都在寻找解决方案,或者至少是从哪里解决问题的地方,所以我在这里。

我正在用wsgi运行链接到我的Apache的Flask服务器。
我正在从用户网络摄像头恢复图片作为64位基本字符串(从URI中恢复)并将其写入临时文件中。
我正在对另一个临时文件上的用户的个人资料图片(例如Facebook)执行相同的操作。

    # Decode base64 to image data
    imgdataCam = stringBase64Cam.decode('base64')
    imgdataPro = stringBase64Pro.decode('base64')

    # Create temporary files
    tempFile1 = tempfile.NamedTemporaryFile()
    tempFile2 = tempfile.NamedTemporaryFile()

    # Write images data in files
    tmpImg1=open(tempFile1.name,'wb')
    tmpImg1.write(imgdataCam)
    tmpImg1.close()
    tmpImg2=open(tempFile2.name,'wb')
    tmpImg2.write(imgdataPro)
    tmpImg2.close()

稍后,我尝试读取这些文件(临时文件仍未关闭,因此它们仍然存在)为
    img1 = cv2.imread(tempFile1.name)

但是看起来好像什么都没有,我到处都做了一些打印,看起来“cv2.imread()”正在停止我的程序而没有任何错误消息。
我也尝试用PIL读取这些图像,如下所示:
    pilImg1 = Image.open(tempFile1.name).convert('RGB') 
    ocvImg1 = np.array(pilImg1)
    img1 = ocvImg1[:, :, ::-1].copy()

使用PIL,我可以读取文件,但是遇到的问题与
    greyImg = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY) 

稍后在我的程序上。

笔记本电脑上的一切运行都很好,但是一旦我将其上传到树莓派上,就会遇到这些问题。
有人可以帮我了解它的来源吗?

当我在此树莓上运行带有“python init .py”的 flask Servur时,它也运行良好。

最佳答案

我终于设法找到问题的根源。

我无法在树莓上读取文件,因为它正在使用wsgi和apache,并且没有访问这些文件的权限。我通过将以下行添加到我的apache vHost配置文件(/etc/apache2/sites-available/myapplication.conf)中来修复了问题。

WSGIDaemonProcess fbApp user=www-data group=www-data threads=2

我仍然不明白为什么Opencv没有返回任何错误。希望它能帮助遇到同样问题的人。

关于python - 在树莓派2上的临时文件中读取图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35508319/

相关文章:

python - 为真实数据的分布生成随机数?

python - 即使数据库显示数据,PyMongo 也不会返回 None

python - PyGTK 和 Visual-Python

java - OpenCV 检测最大矩形产生令人费解的结果

Python OpenCV : Play UDP video streaming while sending keep alive messages

python - 模糊图像的一部分并将其与背景混合

python - flask 应用程序的 redis 数据库

html - 在 flask 中格式化html代码?

python - 如何覆盖键盘中断? (Python)

python - Flask 循环未按预期在 Bootstrap 下拉菜单中迭代