import cv2 import numpy as np from PIL import Image def process_image(input_path, output_path): # 读取图片 image = cv2.imread(input_path) hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) # 定义绿色的HSV范围 lower_green = np.array([40, 40, 40]) upper_green = np.array([80, 255, 255]) # 创建掩码 mask = cv2.inRange(hsv, lower_green, upper_green) # 寻找轮廓 contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # 筛选符合条件的轮廓 filtered_contours = [cnt for cnt in contours if 3000 < cv2.contourArea(cnt) < 1000000] # 在原图上绘制并保存结果 result_image = image.copy() for i, cnt in enumerate(filtered_contours): x, y, w, h = cv2.boundingRect(cnt) cropped_image = result_image[y:y + h, x:x + w] cv2.imwrite(f"{output_path}_{i + 1}.png", cropped_image) # 调用函数处理图片 #process_image("D:\\tx_test_str.png", "1.3") import os from PIL import Image def merge_images_vertically(directory_path, output_path): # 获取目录中所有图片文件的路径 image_paths = [os.path.join(directory_path, f) for f in os.listdir(directory_path) if f.endswith(('.png', '.jpg', '.jpeg'))] # 打开所有图片并获取它们的尺寸 images = [Image.open(image_path) for image_path in image_paths] widths, heights = zip(*(i.size for i in images)) # 计算总高度和最大宽度 total_height = sum(heights) max_width = max(widths) # 创建一个新的空白图片,用于放置所有图片 new_image = Image.new('RGB', (max_width, total_height), (255, 255, 255)) # 将每个图片粘贴到新图片上 y_offset = 0 for image in images: new_image.paste(image, (0, y_offset)) y_offset += image.height # 保存新图片 new_image.save(output_path) # 使用示例 directory_path = r'D:\123\Pic' merge_images_vertically(directory_path, 'merged_image.jpg')