2013-07-30 148 views
1

我使用puthon 2.7,windows 7和opencv 2.4.6。我嘗試運行下面的代碼:圖像解碼時出錯(imdecode)

https://github.com/kyatou/python-opencv_tutorial/blob/master/08_image_encode_decode.py

#import opencv library 
import cv2 
import sys 
import numpy 

argvs=sys.argv 
if (len(argvs) != 2): 
print 'Usage: # python %s imagefilename' % argvs[0] 
quit() 

imagefilename = argvs[1] 
try: 
    img=cv2.imread(imagefilename, 1) 
except: 
    print 'faild to load %s' % imagefilename 
    quit() 

#encode to jpeg format 
#encode param image quality 0 to 100. default:95 
#if you want to shrink data size, choose low image quality. 
encode_param=[int(cv2.IMWRITE_JPEG_QUALITY),90] 
result,encimg=cv2.imencode('.jpg',img,encode_param) 
if False==result: 
    print 'could not encode image!' 
    quit() 

#decode from jpeg format 
decimg=cv2.imdecode(encimg,1) 

cv2.imshow('Source Image',img) 
cv2.imshow('Decoded image',decimg) 
cv2.waitKey(0) 
cv2.destroyAllWindows() 

我不斷收到以下錯誤:

encode_param=[int(cv2.IMWRITE_JPEG_QUALITY), 90] 
AttributeError: 'module' object has no attribute 'IMWRITE_JPEG_QUALITY' 

我已經嘗試了很多事情:重新安裝OpenCV的,轉換CV2到CV代碼和搜索不同的論壇,但我不斷收到此錯誤。我錯過了什麼嗎?有沒有人可以運行此代碼而不會出現錯誤?

BTW:其他OpenCV的代碼(從攝像頭拍照)運行沒有問題....

此刻,我將圖像保存到一個臨時JPG文件。使用imencode函數我想在內存中創建jpg文件。

在此先感謝和問候。

回答

1

這個問題不在你的代碼中,它應該可以工作,但它與你的OpenCV Python包一樣。我不能告訴你爲什麼提出這個錯誤,但你可以通過這個改變encode_param報關行避免:

encode_param=[1, 90] 
+0

感謝您的解決方案。所以第一個參數是一個枚舉索引?我直接得到下一個錯誤:result,encimg = cv2.imencode('。jpg',img,[1,90])TypeError:'bool'對象不可迭代 –