您的位置:首页 > 编程语言 > Python开发

Python图像处理(10):从2.4.11到3.0.0

2015-06-10 00:38 726 查看
快乐虾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中已经没有此库了,因此有一部分功能只能另想它法了。



暂且就只发现这么多,继续。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: