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

embedded/2025/2/5 12:37:29/

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

项目思路

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

代码实现

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 可以根据图像的实际情况进行调整。

http://www.ppmy.cn/embedded/159750.html

相关文章

【Python深入浅出】解锁Python3自定义函数:从新手到高手的进阶之路

目录 一、Python3 自定义函数初相识二、自定义函数的语法基础&#xff08;一&#xff09;定义函数的基本格式&#xff08;二&#xff09;函数命名规则&#xff08;三&#xff09;参数与参数传递&#xff08;四&#xff09;参数解包 三、函数的返回值&#xff08;一&#xff09;…

【C++】STL——vector的使用

目录 &#x1f495;1.vector介绍 &#x1f495;2.vector的基本用法 &#x1f495;3.vector功能的具体用法 &#xff08;讲解&#xff09; &#x1f495;4.vector——size&#xff0c;capacity函数的使用 &#xff08;简单略讲&#xff09; &#x1f495;5.resize&#xff…

SpringBoot 整合 SpringMVC:配置嵌入式服务器

修改和 server 相关的配置(ServerProperties)&#xff1a; server.port8081 server.context‐path/tx server.tomcat.uri‐encodingUTF‐8 注册 Servlet 三大组件&#xff1a;Servlet、Fileter、Listener SpringBoot 默认是以 jar 包的方式启动嵌入式的 Servlet 容器来启动 Spr…

python Flask-Redis 连接远程redis

当使用Flask-Redis连接远程Redis时&#xff0c;首先需要安装Flask-Redis库。可以通过以下命令进行安装&#xff1a; pip install Flask-Redis然后&#xff0c;你可以使用以下示例代码连接远程Redis&#xff1a; from flask import Flask from flask_redis import FlaskRedisa…

Machine Learning Engineering Open Book 机器学习工程开放书

文章目录 一、关于 Machine Learning Engineering Open Book二、书籍目录三、关键对照表四、快捷方式 一、关于 Machine Learning Engineering Open Book 这是一个开放的方法、工具和分步说明集合&#xff0c;有助于成功训练和微调大型语言模型和多模态模型及其推理。 这是一…

对比DeepSeek、ChatGPT和Kimi的学术写作中搜集参考文献能力

参考文献 列出引用过的文献&#xff0c;按引用顺序排列&#xff0c;并确保格式规范。只列举确实阅读过的文献&#xff0c;包括书籍、期刊文章等&#xff0c;以便读者进一步查阅相关资料。也可以利用endnotes和zotero等文献管理工具插入文献。由于ChatGPT4无法联网进行检索&…

深度解读 Docker Swarm

一、引言 随着业务规模的不断扩大和应用复杂度的增加,容器集群管理的需求应运而生。如何有效地管理和调度大量的容器,确保应用的高可用性、弹性伸缩和资源的合理分配,成为了亟待解决的问题。Docker Swarm 作为 Docker 官方推出的容器集群管理工具,正是在这样的背景下崭露头…

【Convex Optimization Stanford】Lec7. Statistical estimation

【Convex Optimization Stanford】Lec7. Statistical estimation 前言参数化分布估计带有独立同分布噪声的线性估计Logistic 回归二分假说检验 实验设计 前言 略 参数化分布估计 极大似然估计&#xff0c;大概意思就是调整参数&#xff0c;让 y y y出现的概率的对数值最大。…