OpenCV-Python实战(2)——必备的numpy知识

一、n维数组  ndarray

使用numpy模块建立的数组数据类型为ndarray (n-dimension array)。

可以使用以下命令调用ndarray的属性

import numpy as np
ndarray = np.array([[1,2,3],[1,2,3]])
print(ndarray.dtype)  # 数组元素类型
print(ndarray.item)   # 数组元素数据所占空间(字节)
print(ndarray.ndim)   # 数组维度
print(ndarray.shape)  # 数组形状
print(ndarray.size)   # 数组元素个数

二、建立n维数组 

1、np.array()

x1 = np.array(shape, dtype = float)

shape:数组形状。

dtype:数据类型,默认:float。

2、np.zeros()

x1 = np.zeros(shape, dtype = float)

3、np.zones()

x1 = np.ones(shape, dtype = float)

4、np.empty()

x1 = np.empty(shape, dtype = float)

5、np.random.randint() 

x1 = np.random.randint(low, high = None, size=None, dtype = int)

low:随机数的最小值(包含)。

high:可选项。有则为[low,high);无则为[0,low),随机数范围。

size:数组形状/大小。

dtype:数据类型,默认为:int

6、np.arange()

x1 = np.arange(start, stop, step)

start:起始值(包含),默认为:0。

stop:结束值。

step:相邻元素间距,默认为:1。

7、np.reshape()

x1 = np.reshape(oldshape, newshape)

oldshape:要更改的数组。

newshape:新数组的形状。

三、数组的四则运算

数学中的四则运算符号“+、-、*、/、//、%、**”同样可以运用于Numpy数组。

x = np.array([1,2,3])
y = x + 5  # 以 + 运算为例

 四、数组切片与索引

ndarray[start:end:step]

start:起始索引,省略则表示从0开始索引。

end:终止索引,省略则表示到末端的所用元素。

step:索引间隔,默认为 1。

# 切片
ndarray[:n]  # 从起始取到第n-1个
ndarray[n:]  # 从第0个元素取到最后
ndarray[:-n] # 取得前面列表,不含最后n名
ndarray[-n:] # 取得列表后n名
ndarray[:]   # 取得所有元素
ndarray[::n] # 从起始每隔n个元素间隔取到最后
#索引
ndarray[x,y] # 取出第x行,第y列的元素

五、数组合并

x = np.hstack(tup) # 水平合并
x = np.vstack(tup) # 垂直合并

tup:元组tuple(),内容为要垂直合并的两个数组

import numpy as np
x1 = np.random.randint(0,5,(2,3))
x2 = np.random.randint(5,10,(2,3))
x = np.hstack(tup=(x1,x2))
# x = np.vstack(tup=(x1,x2))
print('数组 1 \n{}'.format(x1))
print('数组 2 \n{}'.format(x2))
print('合并结果 \n{}'.format(x))
数组 1 
[[2 3 4]
 [2 1 2]]
数组 2 
[[7 5 9]
 [6 5 6]]
合并结果 
[[2 3 4 7 5 9]
 [2 1 2 6 5 6]]

### 如何在 Python 中同时安装 OpenCVopencv-contrib-pythonNumPy 和 Pandas 为了在同一环境中成功安装 `opencv`、`opencv-contrib-python`、`numpy` 和 `pandas`,可以按照以下方式操作: #### 使用 pip 安装依赖库 通过 PyPI 镜像源加速安装这些包是一个简单有效的方法。以下是具体的命令示例[^1]: ```bash pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn opencv-python opencv-contrib-python numpy pandas ``` 此命令会从清华大学的镜像站点下载并安装所需的软件包。 --- #### 如果需要手动编译 OpenCV 及其扩展模块 对于某些特定需求(如自定义配置),可以选择手动编译 OpenCV 并集成 NumPy 支持。以下是基于 Ubuntu 18.04 的具体步骤说明[^2][^3]: ##### 准备工作 确保系统已安装必要的开发工具和依赖项: ```bash sudo apt update && sudo apt upgrade sudo apt install build-essential cmake git pkg-config libgtk-3-dev \ libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \ libxvidcore-dev libx264-dev libjpeg-dev libpng-dev libtiff-dev \ gfortran openexr libatlas-base-dev python3-dev python3-numpy ``` ##### 下载 OpenCVOpenCV Contrib 源码 克隆官方仓库到本地目录: ```bash git clone https://github.com/opencv/opencv.git cd opencv git checkout 4.1.1 cd .. git clone https://github.com/opencv/opencv_contrib.git cd opencv_contrib git checkout 4.1.1 ``` ##### 编译配置 创建构建文件夹并运行 CMake 命令来指定所需选项: ```bash mkdir -p ~/opencv/build && cd ~/opencv/build cmake -D CMAKE_BUILD_TYPE=Release \ -D PYTHON_DEFAULT_EXECUTABLE=$(which python3) \ -D PYTHON_INCLUDE_DIR=$(python3 -c "from sysconfig import get_paths; print(get_paths()['include'])") \ -D PYTHON_INCLUDE_DIR2=$(python3 -c "import distutils.sysconfig as s; print(s.get_config_var('INCLUDEPY'))") \ -D PYTHON_LIBRARY=$(python3 -c "import distutils.sysconfig as s; print(s.get_config_var('LIBDIR')+'/lib'+s.get_config_vars('LDLIBRARY')[0])") \ -D PYTHON3_NUMPY_INCLUDE_DIRS=$(python3 -c "import numpy; print(numpy.get_include())") \ -D OPENCV_GENERATE_PKGCONFIG=ON \ -D BUILD_opencv_python2=OFF \ -D WITH_CUDA=OFF \ -D ENABLE_CXX11=ON \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules .. ``` 完成以上设置后即可继续执行后续步骤。 ##### 构建与安装 启动实际编译过程以及最终安装阶段: ```bash make -j$(nproc) sudo make install sudo ldconfig ``` 此时应该已经完成了带有额外功能支持的手动版 OpenCV 安装流程。 --- #### 关于 NumPy 和 Pandas 的自动兼容性处理 当利用预打包形式(即通过 `pip` 工具获取二进制发行版本)来进行安装时,通常无需担心它们之间的相互作用问题;因为官方维护者会在发布前验证过彼此间的协作关系[^1]。然而,在自行编译期间,则需特别留意所选参数是否正确反映了目标环境下的实际情况——尤其是涉及路径解析的部分。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小码贾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值