欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 高考 > 结合机器视觉与深度学习的 Python 项目

结合机器视觉与深度学习的 Python 项目

2025/2/26 3:43:38 来源:https://blog.csdn.net/go5463158465/article/details/145439568  浏览:    关键词:结合机器视觉与深度学习的 Python 项目

以下是一个结合机器视觉与深度学习的 Python 项目示例,用于对茶汤照片进行背景处理、识别颜色最均匀的区域、进行色彩校正并提取 RGB 值,同时可以处理从采集装置传输到电脑的照片。

项目思路

  1. 背景处理:使用 OpenCV 库对图像进行预处理,如高斯模糊、边缘检测等,去除背景干扰。
  2. 识别颜色最均匀的区域:将图像分割成小区域,计算每个区域的颜色方差,选择方差最小的区域作为颜色最均匀的区域。
  3. 色彩校正:使用标准色卡或已知颜色的区域进行色彩校正。
  4. 提取 RGB 值:从颜色最均匀的区域中提取平均 RGB 值。
  5. 处理采集装置传输的照片:可以使用 Python 的文件操作功能,监听指定文件夹,当有新照片传入时自动处理。

代码实现

import cv2
import numpy as np
import os
import time# 背景处理函数
def background_processing(image):# 高斯模糊blurred = cv2.GaussianBlur(image, (5, 5), 0)# 转换为灰度图像gray = cv2.cvtColor(blurred, cv2.COLOR_BGR2GRAY)# 边缘检测edges = cv2.Canny(gray, 50, 150)# 查找轮廓contours, _ = cv2.findContours(edges.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 创建掩码mask = np.zeros_like(gray)cv2.drawContours(mask, contours, -1, 255, thickness=cv2.FILLED)# 应用掩码result = cv2.bitwise_and(image, image, mask=mask)return result# 识别颜色最均匀的区域
def find_most_uniform_region(image, grid_size=50):height, width, _ = image.shapemin_variance = float('inf')most_uniform_region = Nonefor y in range(0, height, grid_size):for x in range(0, width, grid_size):roi = image[y:y+grid_size, x:x+grid_size]if roi.size > 0:variance = np.var(roi, axis=(0, 1))total_variance = np.sum(variance)if total_variance < min_variance:min_variance = total_variancemost_uniform_region = roireturn most_uniform_region# 色彩校正(简单示例,假设已知标准颜色)
def color_correction(image, standard_color=(255, 255, 255)):# 计算平均颜色mean_color = np.mean(image, axis=(0, 1))# 计算校正系数correction_factors = np.divide(standard_color, mean_color)# 应用校正系数corrected_image = np.multiply(image, correction_factors).astype(np.uint8)return corrected_image# 提取 RGB 值
def extract_rgb_values(image):mean_rgb = np.mean(image, axis=(0, 1)).astype(int)return mean_rgb# 处理照片的主函数
def process_image(image_path):# 读取图像image = cv2.imread(image_path)if image is None:print(f"无法读取图像: {image_path}")return# 背景处理processed_image = background_processing(image)# 识别颜色最均匀的区域uniform_region = find_most_uniform_region(processed_image)# 色彩校正corrected_region = color_correction(uniform_region)# 提取 RGB 值rgb_values = extract_rgb_values(corrected_region)print(f"提取的 RGB 值: {rgb_values}")# 显示处理后的图像cv2.imshow("Processed Image", processed_image)cv2.imshow("Most Uniform Region", uniform_region)cv2.imshow("Corrected Region", corrected_region)cv2.waitKey(0)cv2.destroyAllWindows()# 监听指定文件夹,处理新传入的照片
def monitor_folder(folder_path):processed_files = set()while True:for root, dirs, files in os.walk(folder_path):for file in files:if file.lower().endswith(('.png', '.jpg', '.jpeg')):file_path = os.path.join(root, file)if file_path not in processed_files:print(f"处理新照片: {file_path}")process_image(file_path)processed_files.add(file_path)time.sleep(1)if __name__ == "__main__":# 替换为实际的照片文件夹路径folder_path = "path/to/your/photos"monitor_folder(folder_path)

代码解释

  1. background_processing 函数:对图像进行高斯模糊、边缘检测和轮廓查找,创建掩码并应用到原始图像上,去除背景干扰。
  2. find_most_uniform_region 函数:将图像分割成小区域,计算每个区域的颜色方差,选择方差最小的区域作为颜色最均匀的区域。
  3. color_correction 函数:计算图像的平均颜色,与标准颜色进行比较,计算校正系数并应用到图像上。
  4. extract_rgb_values 函数:计算颜色最均匀区域的平均 RGB 值。
  5. process_image 函数:读取图像,依次调用背景处理、识别颜色最均匀的区域、色彩校正和提取 RGB 值的函数,并显示处理后的图像。
  6. monitor_folder 函数:监听指定文件夹,当有新照片传入时,调用 process_image 函数进行处理。

注意事项

  • 请将 folder_path 替换为实际的照片文件夹路径。
  • 色彩校正部分的标准颜色可以根据实际情况进行调整。
  • 代码中的网格大小 grid_size 可以根据图像的实际情况进行调整。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词