本文概述
- 访问和修改像素值
- 访问图像属性
- 图像投资回报率(感兴趣区域)
- 分割和合并图像通道
- 为图像制作边框
- 图像颜色变化
- 访问像素值并修改它们
- 访问图像属性
- 设定影像区域
- 分割和合并图像
- 更改图像颜色
import numpy as npimport cv2img = cv2.imread("C:\Users\DEVANSH SHARMA\cat.jpeg", 1)pixel = img[100, 100]print(pixel)
输出
[190 166 250]
访问图像属性 最好知道要与图像处理应用程序一起使用的图像的大小。在OpenCV中, 图像通常存储在Numpy ndarray中。要获取图像的形状或大小, 请使用ndarray.shape查找图像的尺寸。然后, 我们可以使用索引位置获取通道的高度, 宽度和数量。
考虑以下示例:
import cv2# read imageimg = cv2.imread(r'C:\Users\DEVANSH SHARMA\cat.jpeg', 1)# height, width, number of channels in imageheight = img.shape[0]width = img.shape[1]channels = img.shape[2]size1 = img.sizeprint('Image Dimension: ', dimensions)print('Image Height: ', height)print('Image Width: ', width)print('Number of Channels : ', channels)print('Image Size:', size1)
输出
Image Dimension:(4, 1, 3)Image Height:4Image Width:1Number of Channels :3Image Size: 12
图像投资回报率(感兴趣区域) 有时, 我们需要处理图像的某些区域。正如我们在上一教程中讨论的那样, 人脸检测涵盖了整个场景。当获得一张脸时, 我们只选择脸部区域并在其中搜索眼睛, 而不是搜索整个图像。由于眼睛始终在脸上, 不需要搜索整个图像, 因此它可以提高准确性和性能。
文章图片
在上图中, 如果需要选择球。我们只需要选择球区域。
分割和合并图像通道 图像的BGR通道可以在需要时分为其平面。然后, 各个通道可以再次从BGR图像合并回去。这可以通过以下方式完成:
b, g, r = cv2.split(img)img = cv2.merge((b, g, r))
or
b = img[:, :, 0]
注意:cv2.split()函数是一个慢函数。 NumPy索引非常有效, 应该尽可能使用它。 为图像制作边框 OpenCV提供cv2.copyMakeBorder()函数来在图像周围创建边框, 类似于相框。该函数的语法如下。
cv2.copyMakeBorder(src, top, bottom, left, right, border type)
参数:
src-表示输入图像。
顶部, 底部, 左侧, 右侧-定义相应方向上像素数的边框宽度。
borderType-定义要添加的边框类型。边框可以是以下类型。
value-边框类型为cv.BORDER_CONSTANT时边框的颜色
考虑以下示例:
import cv2 as cvimport numpy as npfrom matplotlib import pyplot as pltBLUE = [255, 0, 0]img1 = cv.imread(r'C:\User\DEVANSH SHARMA\flower.jpg', 1)replicate = cv.copyMakeBorder(img1, 10, 10, 10, 10, cv.BORDER_REPLICATE)reflect = cv.copyMakeBorder(img1, 10, 10, 10, 10, cv.BORDER_REFLECT)reflect101 = cv.copyMakeBorder(img1, 10, 10, 10, 10, cv.BORDER_REFLECT_101)wrap = cv.copyMakeBorder(img1, 10, 10, 10, 10, cv.BORDER_WRAP)constant= cv.copyMakeBorder(img1, 10, 10, 10, 10, cv.BORDER_CONSTANT, value=http://www.srcmini.com/BLUE)plt.subplot(231), plt.imshow(img1,'gray'), plt.title('ORIGINAL')plt.subplot(232), plt.imshow(replicate, 'gray'), plt.title('REPLICATE')plt.subplot(233), plt.imshow(reflect, 'gray'), plt.title('REFLECT')plt.subplot(234), plt.imshow(reflect101, 'gray'), plt.title('REFLECT_101')plt.subplot(235), plt.imshow(wrap, 'gray'), plt.title('WRAP')plt.subplot(236), plt.imshow(constant, 'gray'), plt.title('CONSTANT')plt.show()
图像颜色变化 OpenCV的cvtColor
cvtColor用于将图像从一种颜色空间转换为另一种颜色空间。语法如下:
cv2.cvtColor(src, dst, code)
参数:
src-用于输入图像:8位无符号。
dst-用于显示图像作为输出。输出图像的大小和深度将与输入图像相同。
代码-颜色空间转换代码。
考虑以下示例:
# importing cv2import cv2# path of the input imagepath = (r'C:\Users\DEVANSH SHARMA\cat.jpeg')# Reading an image in default mode src = http://www.srcmini.com/cv2.imread(path) # Window name in which image is displayed window_name ='Image' # Using cv2.cvtColor() method # Using cv2.COLOR_BGR2GRAY color space for convert BGR image to grayscale# conversion code image = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY ) # Displaying the imagecv2.imshow(window_name, image)
【OpenCV图像基本操作】输出
文章图片
推荐阅读
- OpenCV图像过滤器
- OpenCV图像轮廓
- OpenCV模糊(图像平滑)
- OpenCV Canny边缘检测
- OpenCV教程 | Python使用OpenCV
- OpenCV Blob检测
- 使用OpenCV进行人脸识别和人脸检测
- python|python-opencv快速上手教程
- c++|opencv安装及配置,对源码进行编译并配置环境