(超全)python图像处理详细解析(4)

news/2024/10/19 23:35:17/

图像处理

    • 34.边缘检测
    • 35.gabor滤波
    • 36.画线条
    • 37.画实心圆
    • 38.画四边形
    • 39.画六边形
    • 40.画椭圆形
    • 41.画空心圆
    • 42.平移图像
    • 43.图像的镜像

34.边缘检测

(1)sobel算子:可用来检测边缘
(2)scharr算子:同sobel算子
(3)prewitt算子:同sobel算子
(4)canny算子:canny算子也是用于提取边缘特征,但它不是放在filters模块,而是放在feature模块

python">from skimage import data,filters,feature
import matplotlib.pyplot as pltimg=io.imread('iii.jpg')plt.subplot(231)  
plt.title('1')
plt.imshow(img,plt.cm.gray)plt.subplot(232)  
plt.title('2')
edges2 = filters.sobel(img)
plt.imshow(edges2,plt.cm.gray)plt.subplot(233)  
plt.title('3')
img_gray3 = color.rgb2gray(img)
edges3 = filters.sobel(img_gray3)
plt.imshow(edges3)plt.subplot(234)  
plt.title('4')
img_gray4 = color.rgb2gray(img)
edges4 = filters.scharr(img_gray4)
plt.imshow(edges4)plt.subplot(235)  
plt.title('5')
img_gray5 = color.rgb2gray(img)
edges5 = filters.prewitt(img_gray5)
plt.imshow(edges5)#canny算子
plt.subplot(236)  
plt.title('6')
img_gray6 = color.rgb2gray(img)
edges6 = feature.canny(img_gray6)plt.imshow(edges6)

在这里插入图片描述

35.gabor滤波

gabor滤波可用来进行边缘检测和纹理特征提取。

python">from skimage import data,filters,color
import matplotlib.pyplot as plt
img = io.imread('iii.jpg')
img_gray = color.rgb2gray(img)
#
filt_real, filt_img = filters.gabor(img_gray,frequency=0.6)   plt.figure('gabor',figsize=(8,8))plt.subplot(121)
plt.title('filt_real')
plt.imshow(filt_real,plt.cm.gray)  plt.subplot(122)
plt.title('filt-imag')
plt.imshow(filt_img,plt.cm.gray)plt.show()

在这里插入图片描述

36.画线条

skimage.draw.line(r1,c1,r2,c2)
r1,r2: 开始点的行数和结束点的行数
c1,c2: 开始点的列数和结束点的列数

python">from skimage import data,draw,color
import matplotlib.pyplot as plt
img = io.imread('iii.jpg')
#表示从(120,50)到(120,240)连一条线
rr,cc=draw.line(120,50,120,240)
img[rr,cc] = 255
plt.imshow(img,plt.cm.gray)

在这里插入图片描述
绘制其他颜色线条

python">from skimage import data,draw,color
import matplotlib.pyplot as plt
img = io.imread('iii.jpg')
rr,cc=draw.line(120,50,120,240)
#绘制颜色线条
draw.set_color(img,[rr,cc],[0,0,100])
# img[rr,cc] = 255
plt.imshow(img,plt.cm.gray)

在这里插入图片描述

37.画实心圆

skimage.draw.circle(cy, cx, radius)
cy和cx表示圆心点,radius表示半径

python">from skimage import data,draw,color
import matplotlib.pyplot as plt
img = io.imread('iii.jpg')
#圆心点坐标为(120,120),半径为30
rr,cc=draw.disk((120,120),30)
draw.set_color(img,[rr,cc],[255,0,0])
plt.imshow(img,plt.cm.gray)

在这里插入图片描述

38.画四边形

skimage.draw.polygon(Y,X)
Y为多边形顶点的行集合,X为各顶点的列值集合。

python">from skimage import data,draw,color
import matplotlib.pyplot as plt
import numpy as np
img=io.imread('iii.jpg')
#设置四个顶点,所以是四边形
Y=np.array([10,10,60,100])
X=np.array([100,180,220,180])
#Y为多边形顶点的行集合,X为各顶点的列值集合。
rr,cc=draw.polygon(Y,X)
draw.set_color(img,[rr,cc],[255,0,0])
plt.imshow(img,plt.cm.gray)

在这里插入图片描述

39.画六边形

python">from skimage import data,draw,color
import matplotlib.pyplot as plt
import numpy as np
img=io.imread('iii.jpg')
#设置六个顶点,所以是六边形
Y=np.array([10,10,60,100,100,60])
X=np.array([100,180,220,180,100,60])
rr,cc=draw.polygon(Y,X)
draw.set_color(img,[rr,cc],[255,0,0])
plt.imshow(img,plt.cm.gray)

在这里插入图片描述

40.画椭圆形

skimage.draw.ellipse(cy, cx, yradius, xradius)
cy和cx为中心点坐标,yradius和xradius代表长短轴。

python">from skimage import data,draw,color
import matplotlib.pyplot as plt
img=io.imread('iii.jpg')
#50和150为中心坐标,30和80表示短轴和长轴
rr,cc=draw.ellipse(50,150,30,80)
draw.set_color(img,[rr,cc],[255,0,0])
plt.imshow(img,plt.cm.gray)

在这里插入图片描述

41.画空心圆

skimage.draw.circle_perimeter(yx,yc,radius)
yx,yc是圆心坐标,radius是半径

python">from skimage import data,draw,color
import matplotlib.pyplot as plt
img = io.imread('iii.jpg')
#150和150 表示圆心坐标,50表示半径
rr, cc=draw.circle_perimeter(150,150,50)
draw.set_color(img,[rr,cc],[255,0,0])
plt.imshow(img,plt.cm.gray)

在这里插入图片描述

42.平移图像

matplotlib.pyplot通常用于绘图,matplotlib.image用于加载图像,Affine2D来自matplotlib.transforms模块,用于进行2D仿射变换。

python"># 导入所需的库
# matplotlib.pyplot 用于创建图形和子图
# matplotlib.image 用于读取图像文件
# matplotlib.transforms 用于创建变换对象
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
from matplotlib.transforms import Affine2D
# 读取图像文件 'iii.jpg' 并将其存储在变量 img 中
img = mpimg.imread('iii.jpg')
# 创建一个图形,命名为 'gabor',并设置其尺寸为 8x8 英寸
plt.figure('gabor',figsize=(8,8))
# 设置x轴的范围为 -100 到 100
plt.xlim(-100, 100)plt.subplot(1, 2, 1)
plt.imshow(img)
plt.title('1')
plt.axis('off')plt.subplot(1, 2, 2)
# 创建一个变换对象,将图像平移 150 个单位
transform = Affine2D().translate(150, 150)  
#transform 与 plt.gca().transData 相加,您可以确保变换是应用在数据坐标上的,而不是显示坐标上。
plt.imshow(img, transform=transform + plt.gca().transData)
plt.title('2')
plt.axis('off')plt.show()

在这里插入图片描述

43.图像的镜像

逆时针旋转,水平翻转,垂直翻转

python"># matplotlib.pyplot 用于创建图形和子图
# matplotlib.image 用于读取图像文件
# numpy 用于处理图像数据
import matplotlib.pyplot as plt 
import matplotlib.image as mpimg 
import numpy as npimg = mpimg.imread('iii.jpg')
#对图像进行逆时针旋转90度
rotated_img = np.rot90(img)
#对图像进行水平翻转
flipped_img_horizontal = np.fliplr(img)
#对图像进行垂直翻转
flipped_img_vertical = np.flipud(img)  plt.subplot(2, 2, 1) 
plt.imshow(img) 
plt.title('Original Image')
plt.axis('off')plt.subplot(2, 2, 2) 
plt.imshow(rotated_img) 
plt.title('Rotated Image')
plt.axis('off')plt.subplot(2, 2, 3) 
plt.imshow(flipped_img_horizontal) 
plt.title('Flipped Horizontal Image')
plt.axis('off')plt.subplot(2, 2, 4) 
plt.imshow(flipped_img_vertical) 
plt.title('Flipped Vertical Image')
plt.axis('off')plt.show()

在这里插入图片描述


http://www.ppmy.cn/news/1443311.html

相关文章

python的json序列化和反序列化

在Python中解析JSON数据非常简单,你可以使用内置的json模块。这个模块提供了loads()函数来解析JSON字符串,以及load()函数来解析JSON文件。 import json# JSON字符串 json_str {"name": "John", "age": 30, "city&…

数字孪生智慧水务监测管理平台

1、行业背景 水务局管理数据量多,且视频、传感器等数据分散在不同系统中,在获取到水文监控点的数据后,需花费大量人力及时间去查看识别等,投入成本高,且难以结合业务场景发挥出应有价值。 2、解决方案 数字孪生智慧…

企业计算机服务器中了rmallox勒索病毒怎么办,rmallox勒索病毒解密流程

对于众多的企业来说,通过网络开展各项工作业务已经成为常态,网络为企业的生产运营提供了极大便利,也大大加快了企业发展的步伐,但众多企业越来越重视企业发展中的核心数据安全问题。近期,云天数据恢复中心接到众多企业…

用Python编写一个简单的数字累加器 数字累加器

目录 一.总体说明 二.完整代码 三.逐行分析 一.总体说明 数字累加器是一种用于对数字进行持续累加的设备或算法。它可以在每次输入一个数字时将其与之前的累加结果相加,并更新累加结果。数字累加器通常用于计算总和、平均值或其他需要对连续数字进行累加的应用场景。 在计…

区块链交易所技术开发架构解析 交易所开发团队

区块链交易所是加密货币市场中的关键基础设施之一,它提供了一个平台,让用户可以买卖各种数字资产。而搭建一个功能完善、安全可靠的交易所需要一个复杂的技术开发架构,以及一个协调配合的交易所开发团队。下面我们将分析交易所的技术架构以及…

mysql允许ip远程访问

1.找到自己mysql所安装数据库的bin目录地址 例如:G:\mysql-5.7.23-winx64\bin 2.搜索cmd打开命令提示符进入这个bin目录 注意:如果目录不在c盘需要切换盘符。 切换访问步骤如下(如上例子在G盘) (1)先输入 g: &am…

vuex的学习

首先下载vuex,然后建立一个目录在vueX中 接着在index。js文件夹中引入 引入后导出这个文件 在main.js文件中导入,这样vue就有了状态管理 接着我创建了2个组件,在 里边规定了一个num:0 在 打印出来就可以看见 映射函数mapState,必…