将上个代码颜色部分输出并添加批量处理图片功能,将特征保存到一个文件中
时间: 2024-03-27 12:38:36 浏览: 175
好的,以下是一个基于上一个代码的批量处理图片,并将特征保存到文件中的示例代码:
```python
import cv2
import numpy as np
import pandas as pd
import os
# 定义颜色范围
orange_lower = (0, 70, 50)
orange_upper = (20, 255, 255)
# 定义特征提取函数
def extract_features(image):
# 提取颜色特征
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
mask = cv2.inRange(hsv, orange_lower, orange_upper)
color = cv2.bitwise_and(image, image, mask=mask)
# 提取形状特征
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
area = cv2.contourArea(contours[0])
perimeter = cv2.arcLength(contours[0], True)
return np.concatenate((color.flatten(), [area, perimeter]))
# 定义图像文件夹路径和输出文件路径
image_folder = 'orange_images'
output_file = 'orange_features.csv'
# 遍历图像文件夹,提取特征并保存到文件中
features = []
for filename in os.listdir(image_folder):
if filename.endswith('.jpg'):
image_path = os.path.join(image_folder, filename)
image = cv2.imread(image_path)
feature = extract_features(image)
features.append(feature)
# 将特征保存到文件中
header = [f'pixel{i}' for i in range(3*image.shape[0]*image.shape[1])] + ['area', 'perimeter']
data = pd.DataFrame(features, columns=header)
data.to_csv(output_file, index=False)
```
在这个示例中,我们定义了一个 extract_features 函数,它接受一张橘子图像作为输入,并输出颜色和形状特征。然后,我们遍历图像文件夹中的所有图像,对每张图像调用 extract_features 函数,将输出的特征添加到 features 列表中。最后,我们使用 pandas 库将 features 列表转换为一个数据帧,并将其保存到文件中。需要注意的是,在实际应用中,特征提取的方法和特征的选择可能会因应用场景而异。
阅读全文