图像处理opencv(一)

OpenCV简介

图像处理是指对图像执行一些操作以达到预期效果的过程。可以类比数据分析工作,在数据分析时我们需要做一些数据预处和特征工程。图像处理也是一样的。我们通过图像处理来处理图片从而可以从中提取处一些更加有用的特征。我们可以通过图像处理减少图像噪声,调整图像亮度、颜色或者对比度等等。想要进一步系统了解图像处理基础知识,参看(https://www.youtube.com/watch?v=QMLbTEQJCaI)。

原图:
在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt
import cv2
%matplotlib inline

# Import the image
img = cv2.imread('1.jpg')
# OpenCV中颜色模式的默认设置顺序是BGR 不是RGB,所以看到的不是原图
plt.imshow(img)
<matplotlib.image.AxesImage at 0x1e446562198>

在这里插入图片描述

# 要在RGB模式下查看图像,需要将它从BGR转换为RGB
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

plt.imshow(img_rgb)
<matplotlib.image.AxesImage at 0x1e444e31b00>

在这里插入图片描述

在彩色模型的世界里不仅仅只有这两种颜色模型(BGR)和(RGB)

众多的颜色模型中,灰度(grayscale)、HSV和HLS也是你会在计算机视觉中经常看到的

#灰度(grayscale)
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

plt.imshow(img_gray, cmap = 'gray')
<matplotlib.image.AxesImage at 0x1e445e84c88>

在这里插入图片描述

# 三通道(红,绿,蓝)
fig, axs = plt.subplots(nrows = 1, ncols = 3,figsize = (20, 20))

for i in range(0, 3):
    ax =axs[i]
    ax.imshow(img_rgb[:, :, i], cmap = 'gray')

plt.show()

在这里插入图片描述

在R通道图中,红色饱和度高的部分看起来是白色的。这是由于红色部分中的值接近255。在灰度模式下,值越高颜色就越白。
在G通道图中,绿色饱和度高的部分看起来是白色的。这是由于绿色部分中的值接近255。在灰度模式下,值越高颜色就越白。

在B通道图中,蓝色饱和度高的部分看起来是白色的。这是由于蓝色部分中的值接近255。在灰度模式下,值越高颜色就越白。

# HSV 和 HLS 
# Transform the image into HSV and HLS models
img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
img_hls = cv2.cvtColor(img, cv2.COLOR_BGR2HLS)

# Plot the converted images
fig, (ax1, ax2) = plt.subplots(nrows = 1, ncols =2, figsize = (20, 20))
ax1.imshow(img_hsv)
ax2.imshow(img_hls)

plt.show()

在这里插入图片描述

还在图像上绘制图形,复制原始图像并用cv2.rectangle()函数绘制一个矩形,同时给出左上角和右下角的坐标值

# 复制图片
img_copy = img.copy()

# Draw a rectangle (长方形)
cv2.rectangle(img_copy, pt1 = (100, 470), pt2 =(550, 0),color = (0, 0, 0), thickness = 5)

plt.imshow(img_copy)
<matplotlib.image.AxesImage at 0x1e448ae0198>

在这里插入图片描述

还可以将文本数据放在图像上。使用cv2.putText()函数,我们可以指定文本的位置、字体样式和大小

img_copy = img.copy()
# Add text
cv2.putText(img_copy, text = "goddess",org = (250, 250),
            fontFace = cv2.FONT_HERSHEY_DUPLEX,fontScale = 2,
            color = (0, 255, 0),thickness = 2,lineType = cv2.LINE_AA)


plt.imshow(img_copy)
<matplotlib.image.AxesImage at 0x1e448b45588>

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44510615/article/details/89518080