专栏名称: 小白学视觉
本公众号主要介绍机器视觉基础知识和新闻,以及在学习机器视觉时遇到的各种纠结和坑的心路历程。
目录
相关文章推荐
高工智能汽车  ·  激光雷达“开卷”2.0,头部Tier1入局 ·  昨天  
理想汽车  ·  理想L7交付两周年成绩单发布,感谢有你 ·  2 天前  
青岛日报  ·  太抢眼,飙涨超50%! ·  2 天前  
青岛日报  ·  太抢眼,飙涨超50%! ·  2 天前  
理想汽车  ·  理想i8轻伪装车全国路测开启! ·  3 天前  
小米汽车  ·  小米汽车答网友问(第122集)“小米SU7智 ... ·  2 天前  
51好读  ›  专栏  ›  小白学视觉

基本的图像处理操作

小白学视觉  · 公众号  ·  · 2025-02-20 14:00

正文

点击上方 小白学视觉 ”,选择加" 星标 "或“ 置顶

重磅干货,第一时间送达 图片

图像处理是一种对图像执行操作以从中提取信息或增强图像的方法。图像处理是当今计算机视觉中最热门的话题之一,因为它被认为是计算机视觉、OCR 和其他相机相关领域的基础。

让我们开始实际处理图像。

提示

只是在这里向你展示一个代码片段,但在本文的末尾,提供了的git 存储库,你可以在其中找到此文中的所有代码。你可以直接复制粘贴!

让我们开始吧!

如何读取图像?

你可以通过 3 种类型读取图像。

  1. 使用 open-cv

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() 是用于在时间结束后删除图像的命令。
  • 输出图像是数组的形式。
  1. Pillow 库

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]
  1. matplotlib库

matplotlib 库中的图像模块用于在 Python 中处理图像。

#read image by matplotlib
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
from matplotlib.pyplot import figure
figure(figsize=(43), dpi=80)
img = mpimg.imread(r'C:\Users\ChinmayB\Downloads\pexels-photo-8115603.jpeg')
imgplot = plt.imshow(img)
plt.show()

输出:

  • 输出图像是数组的形式。

使图像模糊

  1. 高斯模糊

使图像模糊的最简单方法是使用高斯滤波器。高斯模糊只是一种借助高斯函数模糊图像的方法。模糊图像使边缘更牢固。

#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()
  1. 内核模糊

你可以自定义模糊率和其他内容。

#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()
  1. 中值模糊
##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, 127255, 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:580100: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()

锐化图像

  • 很多时候,由于相机镜头没有对焦,图像会变得模糊。锐化效果锐化边缘以获得更好的外观。






请到「今天看啥」查看全文