OpenCV教程-OpenCV图像的基本操作
整理:python技术迷
在本教程中,我们将学习与图像相关的基本操作。我们将讨论以下主题。
访问像素值并修改它们
访问图像属性
设置图像区域
拆分和合并图像
更改图像颜色
访问和修改像素值
import numpy as npimport cv2img = cv2.imread("C:\Users\DEVANSH SHARMA\cat.jpeg",1)pixel = img[100,100]print(pixel)
[190 166 250]
👉点击领取:最全Python资料合集
访问图像属性
了解图像的大小是处理图像处理应用程序的一项良好实践。在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
图像ROI(感兴趣的区域)
有时,我们需要处理图像的某些区域。正如在先前的教程中讨论的,面部检测是在整个图片上进行的。当获得面部后,我们只选择面部区域并在其中搜索眼睛,而不是搜索整个图像。这提高了准确性和性能,因为眼睛总是在脸上,不需要搜索整个图像。
在上面的图像中,如果我们需要选择球,我们只需要选择球区域。
拆分和合并图像通道
b,g,r = cv2.split(img)img = cv2.merge((b,g,r))
b = img[:,:,0]
注意:cv2.split()函数速度较慢。Numpy索引非常高效,如果可能的话应该使用它。
为图像制作边框
cv2.copyMakeBorder(src,top,bottom,left,right,border type)
参数:
src - 表示输入图像。
top, bottom, left, right - 在相应方向上定义边框宽度中的像素数。
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=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
cv2.cvtColor(src, dst, code)
参数:
src - 用于输入图像的8位无符号整数。
dst - 用于显示输出的图像。输出图像的大小和深度将与输入图像相同。
code - 颜色空间转换代码。
# importing cv2import cv2# path of the input imagepath = (r'C:\Users\DEVANSH SHARMA\cat.jpeg')# Reading an image in default modesrc = cv2.imread(path)# Window name in which image is displayedwindow_name = 'Image'# Using cv2.cvtColor() method# Using cv2.COLOR_BGR2GRAY color space for convert BGR image to grayscale# conversion codeimage = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY )# Displaying the imagecv2.imshow(window_name, image)
输出:
热门推荐