点击上方
“
小白学视觉
”,选择加"
星标
"或“
置顶
”
重磅干货,第一时间送达
图像处理是一种对图像执行操作以从中提取信息或增强图像的方法。图像处理是当今计算机视觉中最热门的话题之一,因为它被认为是计算机视觉、OCR 和其他相机相关领域的基础。
让我们开始实际处理图像。
提示
:
只是在这里向你展示一个代码片段,但在本文的末尾,提供了的git 存储库,你可以在其中找到此文中的所有代码。你可以直接复制粘贴!
让我们开始吧!
如何读取图像?
你可以通过 3 种类型读取图像。
-
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。OpenCV 旨在为计算机视觉应用程序提供通用基础架构,并加速机器感知在商业产品中的使用。
这是读取图像的最常用方法。
import cv2
#read image by opencv
img_1 = cv2.imread(r"C:\Users\ChinmayB\Downloads\pexels-photo-8115603.jpeg")
cv2.imshow("img",img_1)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2 读取图像
运行代码后,将打开一个单独的窗口,你将看到你的图像。
-
Waitley 代表你希望在屏幕上停留多长时间的时间。
-
destroyAllWindows() 是用于在时间结束后删除图像的命令。
-
-
PIL(Python Imaging Library)为 Python 添加了许多图像处理功能。Pillow 是 PIL 的一个分支,增加了一些用户友好的特性。
# read image by PIL
from PIL import Image
# creating a object
img = Image.open(r"C:\Users\ChinmayB\Downloads\pexels-photo-8115603.jpeg")
img.show()
type(img)
输出:
-
输出格式为JPG格式[PIL.JpegImagePlugin.JpegImageFile]
-
matplotlib 库中的图像模块用于在 Python 中处理图像。
#read image by matplotlib
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
from matplotlib.pyplot import figure
figure(figsize=(4, 3), dpi=80)
img = mpimg.imread(r'C:\Users\ChinmayB\Downloads\pexels-photo-8115603.jpeg')
imgplot = plt.imshow(img)
plt.show()
输出:
使图像模糊
-
使图像模糊的最简单方法是使用高斯滤波器。高斯模糊只是一种借助高斯函数模糊图像的方法。模糊图像使边缘更牢固。
#gaussian blurr
import cv2
img_1 = cv2.imread(r"C:\Users\ChinmayB\Downloads\pexels-photo-8115603.jpeg")
blur = cv2.blur(img_1,(5,5))
cv2.imshow("img",blur)
cv2.waitKey(0)
cv2.destroyAllWindows()
-
你可以自定义模糊率和其他内容。
#Kernel blurr
import numpy as np
kernel = np.ones((5,5),np.float32)/25
dst = cv2.filter2D(img_1,-1,kernel)
cv2.imshow("img",dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
-
##median blurr
img_1 = cv2.imread(r"C:\Users\ChinmayB\Downloads\pexels-photo-8115603.jpeg")
median = cv2.medianBlur(img_1,17)
cv2.imshow("img",median)
cv2.waitKey(0)
cv2.destroyAllWindows()
将图像转换为黑白
-
我们以 RGB 三种颜色读取图像。很多时候我们想使用它的基础版本,比如黑白。
######converting image into black and white
import cv2
img_1 = cv2.imread(r"C:\Users\ChinmayB\Downloads\pexels-photo-8115603.jpeg")
grayImage = cv2.cvtColor(img_1, cv2.COLOR_BGR2GRAY)
(thresh, blackAndWhiteImage) = cv2.threshold(grayImage, 127, 255, cv2.THRESH_BINARY)
# cv2.imshow('Black white image', blackAndWhiteImage)
cv2.imshow('Gray image', grayImage)
cv2.waitKey(0)
cv2.destroyAllWindows()
裁剪图像
#Cropping Image
img_1 = cv2.imread(r"C:\Users\ChinmayB\Downloads\pexels-photo-8115603.jpeg")
x,y,c = img_1.shape
new_img = img_1[50:580, 100:300]
cv2.imshow('Gray image', new_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
-
裁剪非常简单,因为你只需要提供从哪里开始和从哪里结束的坐标。
-
你可以使用 cv2.imwrite 存储裁剪的图像以供进一步处理。
编辑应用程序等对比效果
######contrast
from PIL import Image, ImageEnhance
# Opening Image
im = Image.open(r"C:\Users\ChinmayB\Downloads\pexels-photo-8115603.jpeg")
# Creating object of Contrast class
im3 = ImageEnhance.Contrast(im)
# showing resultant image
im3.enhance(4.9).show()
锐化图像
-
很多时候,由于相机镜头没有对焦,图像会变得模糊。锐化效果锐化边缘以获得更好的外观。