Python-opencv第二篇 图像数据浅析
2018-02-05 23:20
85 查看
一、开发环境
Python版本:Python3.6
opencv版本:opencv3.4.0
二、实验前提
(1)先熟悉opencv基础指令:
http://blog.csdn.net/smile_smilling/article/details/79183022
(2)熟悉numpy基础指令:
https://zhuanlan.zhihu.com/p/24309547
三、实验
运行以上代码,结果如下:
接下来通过修改数组的数据,来看一下具体现象:
原图:
由此可知,第一列表示的是蓝色,将其改为255,则表示把蓝色提高到最大值,也可设置为0,请自己运行代码,对比以下结果
由此可知,第二列为绿色,则第三列为红色,代码与上面类似,图片如下所示
灰度图:
输出数据如下:
灰度图的每个数值
= (彩色图B + G + R )/3
通过以下代码进行验证:
粗略对比,图片基本看不出差别,除了数据有明显差别
全部代码如下:
Python版本:Python3.6
opencv版本:opencv3.4.0
二、实验前提
(1)先熟悉opencv基础指令:
http://blog.csdn.net/smile_smilling/article/details/79183022
(2)熟悉numpy基础指令:
https://zhuanlan.zhihu.com/p/24309547
三、实验
img = cv2.imread('a.jpg',1) print(img.shape) #行、列、通道 print(img.ndim) #维数 print(img) #打印图像数据
运行以上代码,结果如下:
(340, 580, 3) #shape 3 #ndim [[[108 102 55] #data [109 103 56] [111 105 58] ... [117 108 58] [114 105 55] [113 104 54]] [[109 103 56] [110 104 57] [111 105 58] ... [116 107 57] [113 104 54] [112 103 53]] [[111 105 58] [111 105 58] [112 106 59] ... [115 108 58] [112 105 55] [110 103 53]] ... [[110 104 61] [113 107 64] [114 109 64] ... [ 90 94 65] [ 93 94 60] [ 98 96 56]] [[103 97 54] [106 100 57] [108 103 58] ... [ 87 97 74] [ 90 95 66] [ 91 92 60]] [[ 96 90 47] [100 94 51] [102 97 52] ... [100 116 99] [100 113 91] [ 99 108 81]]]由以上数据,可以得出,彩色图片其实是一个三维数组,即为img[340][580][3],分别对应行像素点、列像素点以及BGR。
接下来通过修改数组的数据,来看一下具体现象:
原图:
img[:,:,0] = 255 cv2.imshow('B',img)运行以上代码之后,得到以下图片
由此可知,第一列表示的是蓝色,将其改为255,则表示把蓝色提高到最大值,也可设置为0,请自己运行代码,对比以下结果
img[:,:,1] = 255 cv2.imshow('G',img)运行以上代码,可得到以下结果
由此可知,第二列为绿色,则第三列为红色,代码与上面类似,图片如下所示
灰度图:
img = cv2.imread('a.jpg',0) print(img)运行以上代码,可以得到如下灰度图
输出数据如下:
(340, 580) 2 [[ 89 90 92 ... 94 91 90] [ 90 91 92 ... 93 90 89] [ 92 92 93 ... 94 91 89] ... [ 92 95 96 ... 85 84 84] [ 85 88 90 ... 89 86 82] [ 78 82 84 ... 109 105 99]]由输出数据可知,灰度图为二维数组,即img[340][580],与彩色图的数据进行对比,可以得出以下结论:
灰度图的每个数值
= (彩色图B + G + R )/3
通过以下代码进行验证:
grayimg = img[:,:,0]//3+img[:,:,1]//3+img[:,:,2]//3 print(grayimg)输出结果如下:
[[ 88 88 91 ... 94 91 89] [ 88 89 91 ... 92 89 88] [ 91 91 91 ... 93 90 87] ... [ 90 93 95 ... 82 82 82] [ 84 87 89 ... 85 83 80] [ 77 81 83 ... 104 100 96]]图片如下
粗略对比,图片基本看不出差别,除了数据有明显差别
全部代码如下:
import cv2 import numpy as np def show_BGR(pic,colour = 'B',num = 255): a = 0 name = None img = cv2.imread(pic) if colour == 'B': a = 0 elif colour == 'G': a = 1 elif colour == 'R': a = 2 img[:,:,a] = num cv2.imshow(colour,img) def show_gray(pic): #grayimg = (pic[:,:,0]+pic[:,:,1]+pic[:,:,2])/3 grayimg = pic[:,:,0]//3+pic[:,:,1]//3+pic[:,:,2]//3 print(grayimg) cv2.imshow('gray',grayimg) def main(pic = '1.jpg'): img = cv2.imread(pic,1) print(img) cv2.imshow('image',img) show_BGR(pic,'B',255) show_BGR(pic,'G',255) show_BGR(pic,'R',255) show_gray(img) cv2.waitKey(0) cv2.destroyAllWindows() if __name__ == '__main__': main()PS:欢迎大神指教,个人觉得代码有点冗余
相关文章推荐
- opencv-python图像数据的读取
- Python 解析base64数据到opencv图像
- python opencv实现图像融合
- Python_opencv第一篇、图像加载与缩放
- 关于python 在神经网络训练图像数据预处理时使用的transpose
- 【caffe】使用自己的图像数据训练lenet并用opencv进行预测
- opencv for python (1) 图像读取、显示、保存
- 【python下使用OpenCV实现计算机视觉读书笔记2】图像与字节的变换
- 【Python版】OpenCV学习笔记(2):读取和写入图像
- 图像数据集制作——窗位窗宽+归一化处理【python版本】
- python-opencv3 kmeans图像分类
- 用Opencv读入图像,获取数据,操作后用另一个图像显示
- OpenCv-Python 图像处理基本操作
- python-opencv图像处理基础练习2
- 图像混合(Python+opencv)
- python opencv的视频与图像操作
- opencv访问图像数据
- opencv中读取图像像素数据的问题
- OPENcv从相机采集图像数据-图像处理接口IPLIMAGE结构的指针
- OpenCV图像数据访问,查询表和时间消耗测试