python cv release_OpenCV Python 4.0安装与开发注意事项

原标题:OpenCV Python 4.0安装与开发注意事项

OpenCV4.0发布已经快两个月啦,Python社区终于推出了OpenCV Python4.0的安装包与扩展模块安装包,下载地址如下:

https://pypi.org/project/opencv-python/

安装OpenCV-Python

如果你是第一次使用OpenCV Python开发包,想要安装OpenCV Python4.0只要执行如下命令行即可:

pip install opencv-python

上述命令行会成功安装OpenCV4.0开发包

如果你还想使用OpenCV Python的扩展模块,执行如下命令行即可:

pip install opencv-contrib-python

上述命令行会既安装OpenCV4.0 release模块又安装扩展模块

如果你已经安装了OpenCV以前的3.x版本只需要执行对应的升级安装命令行如下(假设你已经安装opencv-python 3.x)

pip install –upgrade opencv-python

即可升级安装到最新OpenCV 4.0的Python语言开发包。

如果在安装的时候遇到python命令不识别或者pip命令行不识别,请执行如下的命令行实现安装:

python –m pip install opencv-python

或者

python –m pip install opencv-contrib-python

安装好以后打开pycharm IDE,执行如下测试代码

importcv2 ascv

src = cv.imread( "D:/images/test5.png")

cv.imshow( "opencv-python", src)

cv.waitKey( 0)

cv.destroyAllWindows()

运行显示如下:

重大改动

注意这些改变只存在与OpenCV-Python与OpenCV-Contrib-Python开发包中

1.在扩展模块中去掉了SIFT与SURF相关API的调用文件

现在如果想在OpenCV Python 4.x中想使用SIFT与SURF只有靠自己从源代码CMake来编译生成python版本的安装包才可以。

2.全部取消CV_XXX这种枚举类型,比如在3.x中可以正常使用的语句

# OpenCV 3.x中

namedWindow(“input”, cv.CV_WINDOW_AUTOSIZE)

# OpenCV4.x

namedWindow(“input”, cv.WINDOW_AUTOSIZE)

3.findContours函数返回结果由3.x的三个参数变为两个参数

# 在OpenCV3.x中轮廓发现API返回三个值分别为

# image 返回的图像

# contours 每个轮廓的点集合

# hierarchy 每个轮廓对应的层次信息

binary, contours, hierarchy = cv.findContours(binary, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)

OpenCV4.0中需要改为

contours, hierarchy = cv.findContours(binary, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)

4.增加了python语言版本的对DNN模块的加持!

支持图像分类、对象检测(SSD、RCNN、Faster-RCNN、mask-RCNN)、图像分割等网络的使用,而且代码特别简洁,以图像分类Inception h5模型代码调用为例,演示如下:

importcv2 ascv

importnumpy asnp

bin_model = "D:/projects/opencv_tutorial/data/models/googlenet/bvlc_googlenet.caffemodel"

protxt = "D:/projects/opencv_tutorial/data/models/googlenet/bvlc_googlenet.prototxt"

# Load names of classes

classes = None

withopen( "classification_classes_ILSVRC2012.txt", 'rt') asf:

classes = f.read().rstrip( 'n').split( 'n')

# Load a network

net = cv.dnn.readNetFromCaffe(protxt, bin_model)

winName = 'Deep learning image classification in OpenCV'

cv.namedWindow(winName, cv.WINDOW_AUTOSIZE)

cap = cv.VideoCapture( "D:/images/video/lane.avi")

whilecv.waitKey( 1) < 0:

hasFrame, frame = cap.read()

ifnothasFrame:

cv.waitKey()

break

result = np.copy(frame)

# Create a 4D blob from a frame.

blob = cv.dnn.blobFromImage(frame, 1.0, ( 224, 224), ( 104, 117, 123), False, crop= False)

# Run a model

net.setInput(blob)

out = net.forward()

# Get a class with a highest score.

out = out.flatten()

classId = np.argmax(out)

confidence = out[classId]

# Put efficiency information.

t, _ = net.getPerfProfile()

label = 'Inference time: %.2f ms'% (t * 1000.0/ cv.getTickFrequency())

cv.putText(result, label, ( 0, 15), cv.FONT_HERSHEY_SIMPLEX, 0.5, ( 0, 255, 0))

# Print predicted class.

label = '%s: %.4f'% (classes[classId] ifclasses else'Class #%d'% classId, confidence)

cv.putText(result, label, ( 100, 50), cv.FONT_HERSHEY_SIMPLEX, 1.0, ( 0, 255, 0), 2)

cv.imshow(winName, result)

运行截图如下

5.最不可思议的改动-级联检测器训练工具不见啦

-opencv_createsamples

-opencv_traincascade

上述两个级联检测器训练的工具居然神奇的从release模块中消失啦,而且在OpenCV4.0的官方release notes中居然没有任何说明!望周知!想训练级联检测器千万别用4.0.x的版本了。

总结

OpenCV4.0已经更新了有一段时间了,从C++ API到这几天刚刚出炉的OpenCV-Python API我一直在不断使用,调用常见模块大多数的相关API,总来说接口规范比以前进步很大,很多算法的API都用过同一个API给予不同的参数即可调用,大部分接口采用了代码实现与API分离的设计原则,极大的降低了学习成本,有利于初学者更快的学习入门。

合抱之木,生于毫末

九层之台,起于累土

千里之行,始于足下返回搜狐,查看更多

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值