NumPy(Numerical Python)是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix)),支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
本文主要介绍的是C++版本的,地址:https://github.com/dpilger26/NumCpp
这就是C++版本的NumPy,名为NumCpp,是一位叫David Pilger的程序员开发的。从此用#include也能导入头文件,就像Python程序员用import一样容易。
二者除了语法上的差异,调用函数的名称也几乎一致。就算有什么不懂,你也可以去David的说明文档页查找具体用法。
以最基础的数组定义和初始化为例,NumCpp可以直接定义数组、改变数组形状、转换变量类型、生成对角矩阵等等。
从上图可以看出,NumPy和NumCpp调用的函数名称几乎完全一致,除了在定义数据类型上有一些差别。需要注意的是NumpCpp中的创建一个数组调用的是NdArray,而Python上用的是array。
如果需要更详细的了解两种工具包的差异。可以去下面的命名空间、数据结构索引中查看。
命名空间列表按照功能分类,命名空间成员则按照名称排序。数据结构也与之类似。
附上python实例:
安装NumPy
python -m pip install --user numpy scipy matplotlib ipython jupyter pandas sympy nose
可能需要更新pip提示,直接upgrade就行了。
测试代码
>>> from numpy import * >>> eye(4) array([[1., 0., 0., 0.], [0., 1., 0., 0.], [0., 0., 1., 0.], [0., 0., 0., 1.]])
安装Opencv
python -m pip install opencv-python
如果中断可以尝试用梯子或者多试几次!
测试代码:
# -*- coding: utf-8 -* import cv2 import numpy as np cap = cv2.VideoCapture(0) panel = np.zeros([100, 700], np.uint8) cv2.namedWindow('panel') def nothing(x): pass cv2.createTrackbar('L – h', 'panel', 0, 179, nothing) cv2.createTrackbar('U – h', 'panel', 179, 179, nothing) cv2.createTrackbar('L – s', 'panel', 0, 255, nothing) cv2.createTrackbar('U – s', 'panel', 255, 255, nothing) cv2.createTrackbar('L – v', 'panel', 0, 255, nothing) cv2.createTrackbar('U – v', 'panel', 255, 255, nothing) cv2.createTrackbar('S ROWS', 'panel', 0, 480, nothing) cv2.createTrackbar('E ROWS', 'panel', 480, 480, nothing) cv2.createTrackbar('S COL', 'panel', 0, 640, nothing) cv2.createTrackbar('E COL', 'panel', 640, 640, nothing) while True: #_, frame = cap.read() #if not frame: # print 'frame is empty' # break s_r = cv2.getTrackbarPos('S ROWS', 'panel') e_r = cv2.getTrackbarPos('E ROWS', 'panel') s_c = cv2.getTrackbarPos('S COL', 'panel') e_c = cv2.getTrackbarPos('E COL', 'panel') #roi = frame[s_r: e_r, s_c: e_c] roi = cv2.imread('D:\\test.jpg') hsv = cv2.cvtColor(roi, cv2.COLOR_BGR2HSV) l_h = cv2.getTrackbarPos('L – h', 'panel') u_h = cv2.getTrackbarPos('U – h', 'panel') l_s = cv2.getTrackbarPos('L – s', 'panel') u_s = cv2.getTrackbarPos('U – s', 'panel') l_v = cv2.getTrackbarPos('L – v', 'panel') u_v = cv2.getTrackbarPos('U – v', 'panel') lower_green = np.array([l_h, l_s, l_v]) upper_green = np.array([u_h, u_s, u_v]) mask = cv2.inRange(hsv, lower_green, upper_green) mask_inv = cv2.bitwise_not(mask) bg = cv2.bitwise_and(roi, roi, mask=mask) fg = cv2.bitwise_and(roi, roi, mask=mask_inv) cv2.imshow('bg', bg) cv2.imshow('fg', fg) cv2.imshow('panel', panel) k = cv2.waitKey(30) & 0xFF if k == 27: break cap.release() cv2.destroyAllWindows()
收藏的用户(0) X
正在加载信息~
推荐阅读
最新回复 (0)
站点信息
- 文章2302
- 用户1336
- 访客10962994
每日一句
Progress starts with one brave step forward.
进步始于一次勇敢的迈步。
进步始于一次勇敢的迈步。
新会员