OpenCV学习笔记6-图像的基础操作
2017-08-09 11:15
597 查看
获取像素值并修改
获取图像的信息参数
图像的ROI()
图像通道的拆分及合并
给图像添加边界(padding)
img[行,列,通道] #通道:b(0),g(1),r(2)
src是输入的图像矩阵;
top, bottom, left, right分别是各个方向的边界宽度;
borderType指边界的类型,有以下的多种选择:
** cv2.BORDER_CONSTANT - 颜色边界,RGB值在后一个参数给出
** cv2.BORDER_REFLECT - 镜像边界:fedcba|abcdefgh|hgfedcb
** cv2.BORDER_REFLECT_101 or cv2.BORDER_DEFAULT - 另一种进行边界:gfedcb|abcdefgh|gfedcba
** cv2.BORDER_REPLICATE - 边界最外面的颜色将被重复: aaaaaa|abcdefgh|hhhhhhh
** cv2.BORDER_WRAP - 平铺效果 : cdefgh|abcdefgh|abcdefg
获取图像的信息参数
图像的ROI()
图像通道的拆分及合并
给图像添加边界(padding)
img[行,列,通道] #通道:b(0),g(1),r(2)
1.获取像素值并修改
import numpy as np import cv2 img = cv2.imread('../../photo/1.jpg', 1) #读取彩色图像 print(img[100,50,:]) #打印(100,50)处的像素值 cv2.namedWindow('image', cv2.WINDOW_NORMAL) cv2.imshow('image', img[:,:,1]) #显示图像G通道的图像 img[100:300, 200:400, :] = 255 #将图像中某个区域变成白色 cv2.namedWindow('image2', cv2.WINDOW_NORMAL) cv2.imshow('image2', img) cv2.waitKey(0) cv2.destroyAllWindows()
2.获取图像的信息参数
图像的信息参数(行/列/通道数/图像数据类型/像素数目等)import numpy as np import cv2 img = cv2.imread('1.png', 1) print(img.shape) #获取图像尺寸(行数,列数,通道数)(185,229,3) print(img.size) #获取图像大小(像素数)(127095) print(img.dtype) #获取各像素的数据类型(uint8)
3.图像区域(ROI)
有时我们关注的是图像中的某一个区域中的目标,例如在做人脸识别时,首先要做的就是要找到人脸区域,显然,图像区域ROI就是一个很重要的概念。import numpy as np import cv2 img = cv2.imread('1.png', 1) wuding = img[65:133, 65:126, :] #截取屋顶区域 img[65:133, 140:201, :] = wuding #将屋顶区域拷贝到图像其他区域 cv2.imshow('wuding', img) cv2.waitKey(0) cv2.destroyAllWindows()
4.图像通道的拆分及合并
import numpy as np import 4000 cv2 img = cv2.imread('i.png', 1) b, g, r = cv2.split(img) #拆分(一般不用,因为numpy的矩阵切片与合并操作更高效) img = cv2.merge(b, g, r) #合并 #拆分方法2:利用numpy的矩阵切片 b = img[:,:,0] g = img[:,:,1] r = img[:,:,2] img[:,:,2] = 0 #使所有像素的r通道值为0
5.给图像添加边界(padding)
cv2.copyMakeBorder(src, top, bottom, left, right, borderType[, dst[, value]]) -> dstsrc是输入的图像矩阵;
top, bottom, left, right分别是各个方向的边界宽度;
borderType指边界的类型,有以下的多种选择:
** cv2.BORDER_CONSTANT - 颜色边界,RGB值在后一个参数给出
** cv2.BORDER_REFLECT - 镜像边界:fedcba|abcdefgh|hgfedcb
** cv2.BORDER_REFLECT_101 or cv2.BORDER_DEFAULT - 另一种进行边界:gfedcb|abcdefgh|gfedcba
** cv2.BORDER_REPLICATE - 边界最外面的颜色将被重复: aaaaaa|abcdefgh|hhhhhhh
** cv2.BORDER_WRAP - 平铺效果 : cdefgh|abcdefgh|abcdefg
from matplotlib import pyplot as plt import numpy as np import cv2 BLUE = [255, 0, 0] img = cv2.imread('opencv_logo.jpg', 1) #添加不同类型的边界 replicate = cv2.copyMakeBorder(img, 20, 20, 20, 20, cv2.BORDER_REPLICATE) reflect = cv2.copyMakeBorder(img, 20, 20, 20, 20, cv2.BORDER_REFLECT) reflect101 = cv2.copyMakeBorder(img, 20, 20, 20, 20, cv2.BORDER_REFLECT_101) wrap = cv2.copyMakeBorder(img, 20, 20, 20, 20, cv2.BORDER_WRAP) constant = cv2.copyMakeBorder(img, 20, 20, 20, 20, cv2.BORDER_CONSTANT, value = BLUE) #使用matplotlib绘制,交换R和B的位置,OpenCV中是按BGR,matplotlib中是按RGB排列 #或者转换一下:img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR) #plt.xticks([]), plt.yticks([]) 隐藏坐标 plt.subplot(231), plt.imshow(img, 'gray'), plt.title('Original'), plt.xticks([]), plt.yticks([]) plt.subplot(232), plt.imshow(replicate, 'gray'), plt.title('Replicate'), plt.xticks([]), plt.yticks([]) plt.subplot(233), plt.imshow(reflect, 'gray'), plt.title('Reflect'), plt.xticks([]), plt.yticks([]) plt.subplot(234), plt.imshow(reflect101, 'gray'), plt.title('Reflect101'), plt.xticks([]), plt.yticks([]) plt.subplot(235), plt.imshow(wrap, 'gray'), plt.title('Wrap'), plt.xticks([]), plt.yticks([]) plt.subplot(236), plt.imshow(constant, 'gray'), plt.title('Constant'), plt.xticks([]), plt.yticks([]) plt.show()
相关文章推荐
- OpenCV学习笔记一:图像基础操作
- opencv2学习笔记4-操作图像(图像锐化-拉普拉斯算子)
- OpenCV学习笔记(四十一)——再看基础数据结构core OpenCV学习笔记(四十二)——Mat数据操作之普通青年、文艺青年、暴力青年 OpenCV学习笔记(四十三)——存取像素值操作汇总co
- Opencv2系列学习笔记2(图像的其它操作)
- Opencv学习笔记(三)--图像处理的基本操作
- opencv2学习笔记2-操作图像(椒盐噪声)
- Opencv2系列学习笔记1(图像的基本操作)
- Python OpenCV学习笔记之:图像阈值操作
- Python OpenCV学习笔记之:图像数学形态操作
- OpenCV学习笔记_用指针操作图像元素
- 我的OpenCV学习笔记(三):利用操作像素完成简单的图像处理:加入椒盐噪声、图像翻转、改变对比度、图像锐化
- OpenCV学习笔记之(二):图像的基本操作(VS2010+OpenCV3.0)
- 基础学习笔记之opencv(19):有关图像序列的直方图计算
- Opencv学习笔记(四)--图像处理平滑,锐化操作
- OpenCV学习笔记_图像扭曲及旋转操作
- 基础学习笔记之opencv(11):图像混合
- OpenCV学习笔记(3)——图像形态学操作(Mathematical Morphology)
- 基础学习笔记之opencv(9):Mat图像扫描
- 【OpenCV学习笔记】1.2图像的基本操作
- Opencv学习笔记(三):图像的使用与操作_颜色空间的变换