2016-02-19 104 views
0

我一直在尋找整夜尋找解決方案或至少明白問題來自哪裏,所以我在這裏。閱讀樹莓派上的臨時文件內的圖像2

我運行一個Flask服務器鏈接到我的Apache與wsgi。 我正在從用戶網絡攝像頭恢復一張圖片作爲base 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) 

但它看起來像什麼appens,我到處都取得了一定的打印和它看起來像「cv2.imread()」正在停止我的程序沒有任何錯誤消息。 我也試圖與PIL一樣,讀那些圖片:

pilImg1 = Image.open(tempFile1.name).convert('RGB') 
    ocvImg1 = np.array(pilImg1) 
    img1 = ocvImg1[:, :, ::-1].copy() 

隨着PIL我能夠讀取該文件,但我得到了同樣的問題imread與

greyImg = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY) 

在我的節目稍後。

一切都在我的筆記本電腦上運行得很好,但是一旦我將它上傳到我的覆盆子pi上,我就會遇到問題。 有人能幫我理解它來自哪裏嗎?

當我在這個樹莓上運行「python init .py」時,它也運行良好。

回答

1

我終於找到了問題所在的地方。

我無法讀取我的樹莓上的文件,因爲它使用的是wsgi和apache,並且沒有權限訪問這些文件。

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

我還是不明白,爲什麼opencv的搜索沒有找到任何我通過添加以下行來我的Apache虛擬主機配置文件(/etc/apache2/sites-available/myapplication.conf)固定我的所有主題錯誤。希望它能幫助有同樣問題的人。