Python+OpenCV 图像处理系列(8)—— Numpy 对象及图像对象创建与赋值
1. Numpy 相关知识
1.1 Ndarray 对象
在了解 OpenCV 的图像对象之前我们先对 NumPy 的基础知识做一回顾,方便我们后续更进一步理解图像对象的一系列操作。
In [2]: a = np.array([[1, 2], [3,4], [5, 6]])In [3]: a
Out[3]:
array([[1, 2],[3, 4],[5, 6]])In [4]: a.shape
Out[4]: (3, 2)
这是一个 3 X 2 的矩阵。
In [5]: b = np.array([[[1, 2], [3,4], [5, 6]]])In [6]: b
Out[6]:
array([[[1, 2],[3, 4],[5, 6]]])In [7]: b.shape
Out[7]: (1, 3, 2)
这是一个 1 X 3 X 2 的矩阵。
In [8]: c = np.array([[[1, 2], [3,4], [5, 6]], [[11, 22], [33,44], [55, 66]]])In [9]: c
Out[9]:
array([[[ 1, 2],[ 3, 4],[ 5, 6]],[[11, 22],[33, 44],[55, 66]]])In [10]: c.shape
Out[10]: (2, 3, 2)
这是一个 2 X 3 X 2 的矩阵。
1.2 数据类型
名称 | 描述 |
---|---|
bool_ | 布尔型数据类型(True 或者 False) |
int_ | 默认的整数类型(类似于 C 语言中的 long,int32 或 int64) |
intc | 与 C 的 int 类型一样,一般是 int32 或 int 64 |
intp | 用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64) |
int8 | 字节(-128 to 127) |
int16 | 整数(-32768 to 32767) |
int32 | 整数(-2147483648 to 2147483647) |
int64 | 整数(-9223372036854775808 to 9223372036854775807) |
uint8 | 无符号整数(0 to 255) |
uint16 | 无符号整数(0 to 65535) |
uint32 | 无符号整数(0 to 4294967295) |
uint64 | 无符号整数(0 to 18446744073709551615) |
float_ | float64 类型的简写 |
float16 | 半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位 |
numpy 的数值类型实际上是 dtype 对象的实例,并对应唯一的字符,包括 np.bool_,np.int32,np.float32,等等。
dtype 对象是使用以下语法构造的:
numpy.dtype(object, align, copy)
- object - 要转换为的数据类型对象
- align - 如果为 true,填充字段使其类似 C 的结构体。
- copy - 复制 dtype 对象 ,如果为 false,则是对内置数据类型对象的引用
In [13]: dt = np.dtype(np.int32)In [14]: dt
Out[14]: dtype('int32')
2. 图像对象创建与赋值
import cv2
import numpy as npimage_name = "img/003.jpg"
img = cv2.imread(image_name)
print "img is {}".format(img)
print "img is {}".format(len(img)) # img is 198
print "img is {}".format(len(img[0])) # img is 198
print "img is {}".format(len(img[0][0])) # img is 3
x1 = np.copy(img)
print x1.shape # (198, 198, 3)x2 = img
img[50:100, 100:150, :] = 255
cv2.imshow("x2", x2)
cv2.waitKey(0)
cv2.destroyAllWindows()
其中 img[50:100, 100:150, :] = 255 表示将 从图片最顶端 50 像素- 100 像素, 从图片最左边 100 像素- 150 像素的全部值设置成 255 也就是纯白色。
输出结果为:
img is [[[131 190 199][107 167 173][ 82 140 145]...[ 67 125 97][ 67 125 97][ 66 124 96]][[130 187 196][109 167 173][ 88 144 149]...[ 66 124 96][ 66 124 96][ 65 123 95]][[118 170 177][104 156 162][ 90 141 144]...[ 67 125 100][ 66 124 99][ 65 123 98]]...[[ 6 73 36][ 8 75 38][ 9 73 38]...[ 44 58 30][ 45 59 31][ 46 60 32]][[ 4 68 38][ 7 71 41][ 10 71 43]...[ 41 55 27][ 42 56 28][ 44 58 30]][[ 0 63 34][ 5 69 40][ 8 69 43]...[ 39 53 25][ 40 54 26][ 41 55 27]]]
img is 198
img is 198
img is 3
(198, 198, 3)
可以看到图片在内存中是以 NumPy 的多维矩阵形式保存的,它是一个 198 x 198 x 3 的多维矩阵,其中 198 x 198 表示像素, 3 表示通道数,也就是每个像素点由多少个元素组成。
原图和执行之后的效果图如下
x3 = np.zeros(img.shape, img.dtype)
cv2.imshow("x3", x3)
cv2.waitKey(0)
cv2.destroyAllWindows()
图片效果显示
x4 = np.zeros([200, 200], np.uint8)
cv2.imshow("x4", x4)
cv2.waitKey(0)
cv2.destroyAllWindows()
效果显示:
x5 = np.ones(shape=[512, 512, 3], dtype=np.uint8)
x5[:, :, 0] = 255
cv2.imshow("x5", x5)
cv2.waitKey(0)
cv2.destroyAllWindows()
Python+OpenCV 图像处理系列(8)—— Numpy 对象及图像对象创建与赋值相关推荐
- Python+OpenCV 图像处理系列(2)—— 视频捕获、播放和保存
1.视频捕获 为了获取视频,首先需要创建一个 VideoCapture 类对象.它的参数可以是设备的索引号,或者是一个视频文件.设备索引号就是在指定要使用的摄像头.一般的笔记本电脑都有内置摄像头.所以 ...
- Python+OpenCV 图像处理系列(9)—— 图像的翻转和缩放插值
1. 图像的翻转 图像翻转 (Image Flip),图像翻转的本质像素映射,OpenCV 支持三种图像翻转方式: X轴翻转,flipcode = 0 Y轴翻转, flipcode = 1 XY轴翻转 ...
- Python+OpenCV 图像处理系列(5)—— 图像 ROI 操作及通道的拆分合并
1. 图像 ROI 有时你需要对一幅图像的特定区域进行操作.例如我们要检测一副图像中眼睛的位置,我们首先应该在图像中找到脸,再在脸的区域中找眼睛,而不是直接在一幅图像中搜索.这样会提高程序的准确性和性 ...
- Python+OpenCV 图像处理系列(4)—— 图像像素的读写、算术运算、逻辑运算及像素的统计
1. 像素的读写 可以根据像素的行和列的坐标获取它的像素值.对 BGR 图像而言,返回值为 B,G,R 的值. img.shape 可以获取图像的形状.它的返回值是一个包含行数 h,列数 w,通道数 ...
- Python+OpenCV 图像处理系列(1)— Ubuntu OpenCV安装、图片加载、显示和保存
Ubuntu 16.04 下安装 Opencv sudo apt-get install libopencv-dev sudo apt-get install python-opencv 或者使用 p ...
- Python+OpenCV 图像处理系列(3)—— 画线、矩形、画圆、画椭圆、画多边形
OpenCV 中的绘图函数 使用 OpenCV 绘制不同几何图形,其中包括的函数有 cv2.line() cv2.circle() cv2.rectangle() cv2.ellipse() cv2. ...
- Python+OpenCV 图像处理系列(7)—— 图像色彩空间及转换
1. 色彩空间转换函数 cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 第一个参数为加载在内存的读片,第二个参数为转换的类型,其中包括: COLOR_BGR2GRAY = ...
- [Python图像处理] 三十五.OpenCV图像处理入门、算数逻辑运算与图像融合(推荐)
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...
- Python+OpenCV图像处理(一篇全)
参考:1.网易云课堂 Python+OpenCV图像处理 - 网易云课堂 2.[在水一方xym的博客]业精于勤荒于嬉,行成于思毁于随 - CSDN博客 https://blog.csdn.net/za ...
最新文章
- 第三天:Vue的组件化
- serverlet filter
- 有关ArcGIS Server Server URL问题
- 极简教程: 使用 matplotlib 绘制 GIF 动图
- idea 执行 java jar_idea打包java可执行jar包的实现步骤
- mysql验证身份证号正确_通过SQL校验身份证号码是否正确
- idea复制maven项目,source root为原项目的解决方法
- python画画用哪库好_学Python画画:应用Turtle库画一个蠢萌的小黄人
- php+mysql+zend+一键_PHP+MySQL+phpMyAdmin+ZendOptimizer环境一键安装包下载及安装手
- zk框架实现zul的js代码调用服务器java命令
- docx文档文字怎么加边框,WORD文档给文字加的边框,如何调大小
- JavaScript正则表达式学习笔记(一)
- 认识多种处理芯片的特性和实战(上篇)
- 公司企业如何设计微信小程序?
- 操作系统---存储管理
- Unity 触摸事件的运用
- 联发科服务器芯片,基于MTK7623N芯片的香蕉派 BPI-R2 ,智能通信物联网网关开发平台...
- C++ 简单的打折运算
- Numpy基础练习100题[前50题]
- 相机标定的理解及采用opencv和matlab工具箱的标定方法
热门文章
- docker镜像的备份和恢复
- 2022-2028年中国抗盐粘土行业发展现状调查及前景战略分析报告
- 送给2020年高考的考生
- 机器学习PAL数据可视化
- PyTorch迁移学习
- 用NVIDIA NsightcComputeRoofline分析加速高性能HPC的应用
- 5G和AI机器人平台为工业4.0和无人机提供服务
- Linux架构思维导图
- 如何部署自动驾驶系统
- 2021年大数据Flink(三十七):​​​​​​​Table与SQL ​​​​​​案例四