用Python和OpenCV建立一個圖片搜尋引擎時遇到的坑
阿新 • • 發佈:2018-12-13
在學習http://python.jobbole.com/80860/ 中的圖片搜尋引擎時,遇到一些問題,花費了很長時間解決:
問題一:TypeError: ellipse() takes at most 5 arguments (8 given)
解決:有兩個引數不同的ellipse()函式,自動呼叫了五個引數,需要呼叫的方法有八個引數的方法。
由於(cX,cY)不是整數型別,需要強制型別轉化。
由於教程基於的是python2,在遷移到Python 3.6時,一些原本在Python 2.7中工作得很好的程式碼出現問題。
原始碼:cv2.ellipse(ellipMask,(cX, cY),(axesX,axesY), 0, 0, 360, 255, -1)
更改後:cv2.ellipse(ellipMask,(int(cX), int(cY)),(int(axesX),int(axesY)), 0, 0, 360, 255, -1)
參考:https://stackoverflow.com/questions/25408391/python-opencv-ellipse-takes-at-most-5-arguments-8-given
問題二:
hist = cv2.normalize(hist).flatten()
TypeError: Required argument 'dst' (pos 2) not found 解決
缺少一個引數。
解決:
原始碼:hist = cv2.normalize(hist).flatten()
更改後:hist = cv2.normalize(hist,hist).flatten()
需要兩個引數
問題三:路徑問題
result = cv2.imread(args["resultpath"] + "\\" + resultID)imageID = imagePath[imagePath.rfind("\\") +1:]之前遇到過。。由於顯示cv2.imshow("Result", result) 這句出現問題,那麼,我想可能是result不對,於是在search中輸出了resultID。發現之前的一個操作誤將index.csv中的鍵也就是圖片名弄錯了,改回去之後成功了。問題四:速度有點慢