import cv2 import numpy as np img_path = 'C:\\Users\\11021\\Desktop\\火1二辉橄榄岩1-2.jpg' img = cv2.imread(img_path) # 定义每种矿物质的HSV范围 mineral_ranges = { 'biotite': [(0, 0, 50), (10, 255, 255)], # 黑云母 'hornblende': [(30, 50, 50), (50, 255, 255)], # 角闪石 'olivine': [(50, 50, 50), (70, 255, 255)], # 橄榄石 'plagioclase': [(100, 50, 50), (120, 255, 255)], # 斜长石 'pyroxene': [(70, 50, 50), (90, 255, 255)], # 辉石 'quartz': [(20, 50, 50), (30, 255, 255)] # 石英 } # 将图像转换为HSV颜色空间 hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # 创建掩膜和标签数组 masks = [] labels = np.zeros_like(hsv[:, :, 0]) # 遍历每种矿物质的范围,并创建掩膜 for i, (mineral, (lower, upper)) in enumerate(mineral_ranges.items()): mask = cv2.inRange(hsv, np.array(lower), np.array(upper)) masks.append(mask) labels[mask == 255] = i # 保存标签数据到文件 np.savetxt('labels.txt', labels)
时间: 2024-03-11 10:45:16 浏览: 64
这段代码的作用是读取一张图像,并将其转换为HSV颜色空间。然后根据预定义的每种矿物质的HSV范围,创建相应的掩膜。接着,使用掩膜将图像标签化,也就是将每个像素点标记为属于哪种矿物质。最后,将标签数据保存到文件中。
具体地,代码首先定义了每种矿物质的HSV范围,这里使用了字典类型来存储。接着,使用cv2.imread()函数读取指定路径的图像,并将其存储在img变量中。然后,使用cv2.cvtColor()函数将图像从BGR格式转换为HSV格式,并将结果存储在hsv变量中。
接下来,代码遍历每种矿物质的范围,并使用cv2.inRange()函数创建相应的掩膜,掩膜的作用是将图像中符合指定范围的像素点设置为白色(255),其他像素点设置为黑色(0)。同时,将掩膜存储在masks列表中,以便后续使用。
然后,使用labels数组记录每个像素点属于哪种矿物质,标记的方法是将掩膜中值为255的像素点的标签设置为相应的矿物质的索引。最后,将标签数据保存到文件中,文件名为labels.txt。
需要注意的是,代码中使用了numpy库中的np.zeros_like()函数创建了和hsv[:,:,0]相同大小的全零数组,并将其作为labels数组的初始值。
阅读全文