標籤:vs2013 opencv python 影像處理
快樂蝦
http://blog.csdn.net/lights_joy/
歡迎轉載,但請保留作者資訊
今天費了點時間將opencv從2.4.11升級到了3.0.0,簡單記下升級後對python代碼的差異。
1. VideoCapture的差異
在2.4.11中,我們擷取碼率等參數是這樣的:
#獲得碼率及尺寸fps = videoCapture.get(cv2.cv.CV_CAP_PROP_FPS)size = (int(videoCapture.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)),
但到了3.0.0,已經沒有cv2.cv了,相應的代碼也就成了:
#獲得碼率及尺寸fps = videoCapture.get(cv2.CAP_PROP_FPS)size = (int(videoCapture.get(cv2.CAP_PROP_FRAME_WIDTH)), int(videoCapture.get(cv2.CAP_PROP_FRAME_HEIGHT)))
2. findContours的差異
在2.4.11中,執行findContours是這樣的:
# 擷取輪廓,我們的目的是分塊,因此只使用外層輪廓,使用點序列的形式bin_img_save = np.copy(bin_img)(contoures, hierarchy) = cv2.findContours(bin_img_save, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
但在3.0.0下卻有問題:
觀察此函數的匯出介面:
if( PyArg_ParseTupleAndKeywords(args, kw, "Oii|OOO:findContours", (char**)keywords, &pyobj_image, &mode, &method, &pyobj_contours, &pyobj_hierarchy, &pyobj_offset) && pyopencv_to(pyobj_image, image, ArgInfo("image", 1)) && pyopencv_to(pyobj_contours, contours, ArgInfo("contours", 1)) && pyopencv_to(pyobj_hierarchy, hierarchy, ArgInfo("hierarchy", 1)) && pyopencv_to(pyobj_offset, offset, ArgInfo("offset", 0)) ) { ERRWRAP2(cv::findContours(image, contours, hierarchy, mode, method, offset)); return Py_BuildValue("(NNN)", pyopencv_from(image), pyopencv_from(contours), pyopencv_from(hierarchy)); }
可以發現它返回了三個值,因此這個介面的調用就變成了:
# 擷取輪廓,我們的目的是分塊,因此只使用外層輪廓,使用點序列的形式bin_img_save = np.copy(bin_img)(new_img, contoures, hierarchy) = cv2.findContours(bin_img_save, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
3. legacy
在2.4.11中有一個叫legacy的動態庫,但是3.0.0中已經沒有此庫了,因此有一部分功能只能另想它法了。
暫且就只發現這麼多,繼續。
??
Python影像處理(10):從2.4.11到3.0.0