news 2026/5/23 15:07:07

监控邮箱/邮箱自动回复/python

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
监控邮箱/邮箱自动回复/python

主题:QQ邮箱的实时监控和自动回复

实现QQ邮箱的实时监控和自动回复

思路(代码):

1. 获取QQ邮箱授权码

只有开启了QQ邮箱的IMAP SMTP服务,才能

路径:登录QQ邮箱->设置->账号与安全->开启IMAP/SMTP服务

大概在这个位置你会看到一个 ““POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”类似的内容,点击下方的“开启服务”,我这边因为已经开启过了所以看不到

补充(了解即可):


开启IMAP/SMTP服务,按照提示生成一串16位的授权码,务必保存好

2. 读取配置文件

创建配置文件:

读取配置文件:

def load_config(config_file): """加载配置文件(如果需要)""" try: with open(config_file, 'r', encoding='utf-8') as f: config = {} for line in f: if line.strip() and not line.startswith('#'): key, value = line.split('=', 1) config[key.strip()] = value.strip() return config except FileNotFoundError: print(f"配置文件 {config_file} 未找到。使用默认配置。") return {} CONFIG = load_config(r'./QQ_mail.txt') # ---------- 配置区域 ---------- IMAP_SERVER = CONFIG.get('IMAP_SERVER', 'imap.qq.com') EMAIL_ACCOUNT = CONFIG.get('EMAIL_ACCOUNT') # 你的QQ邮箱 EMAIL_PASSWORD = CONFIG.get('EMAIL_PASSWORD') # 替换成16位授权码 CHECK_INTERVAL = CONFIG.get('CHECK_INTERVAL', 180) # 检查间隔(秒) SMTP_SERVER = CONFIG.get('SMTP_SERVER', 'smtp.qq.com') # ---------------------------

3. 解码邮件头部信息

def decode_email_header(header_value): """解码邮件头部信息(处理中文乱码)""" if header_value is None: return "" decoded_parts = [] for part, encoding in decode_header(header_value): if isinstance(part, bytes): try: if encoding: decoded_parts.append(part.decode(encoding)) else: decoded_parts.append(part.decode('utf-8', errors='ignore')) except: try: decoded_parts.append(part.decode('gbk', errors='ignore')) except: decoded_parts.append(part.decode('utf-8', errors='ignore')) else: decoded_parts.append(part) return ''.join(decoded_parts)

4. 从发件人字符串中提取邮箱地址

def get_sender_email(sender_string): """从发件人字符串中提取邮箱地址""" # 匹配邮箱地址的正则表达式 email_pattern = r'[\w\.-]+@[\w\.-]+\.\w+' match = re.search(email_pattern, sender_string) if match: return match.group(0) return sender_string

5. 判断哪些邮箱应该自动回复

有的邮件是系统邮件,可以不用回复

def should_auto_reply(sender_email): """判断是否应该自动回复""" # 检查黑名单 if sender_email in BLACKLIST: return False # 检查是否是系统邮件 system_keywords = ['postmaster', 'mailer-daemon', 'noreply', 'no-reply', 'service'] sender_lower = sender_email.lower() for keyword in system_keywords: if keyword in sender_lower: return False # 检查是否是自己的邮件 if sender_email == EMAIL_ACCOUNT: return False return True

6. 提取邮件正文

def get_email_body(msg): """提取邮件正文""" body = "" try: if msg.is_multipart(): for part in msg.walk(): content_type = part.get_content_type() content_disposition = str(part.get("Content-Disposition")) # 只提取纯文本内容,跳过附件 if content_type == "text/plain" and "attachment" not in content_disposition: try: payload = part.get_payload(decode=True) if payload: body = payload.decode('utf-8', errors='ignore') break except: try: body = part.get_payload(decode=True).decode('gbk', errors='ignore') break except: pass else: # 非 multipart 邮件 payload = msg.get_payload(decode=True) if payload: try: body = payload.decode('utf-8', errors='ignore') except: body = payload.decode('gbk', errors='ignore') except Exception as e: print(f" 提取正文时出错: {e}") return body[:500] # 限制长度

7. 生成回复内容

def generate_reply_content(original_sender, original_subject, original_content=""): """生成回复内容""" reply = f"""您好, 感谢您的来信! 我是自动回复机器人,已收到您的邮件: 主题:{original_subject} 您的邮件对我们很重要,我会尽快人工回复您。 祝好! {EMAIL_ACCOUNT} (自动回复,请勿直接回复此邮件)""" return reply

8. 发送回复邮件

def send_reply(to_email, subject, content): """发送回复邮件 - 增强错误处理""" try: # 创建邮件对象 msg = MIMEMultipart() msg['From'] = EMAIL_ACCOUNT msg['To'] = to_email msg['Subject'] = f"Re: {subject}" # 添加邮件正文 msg.attach(MIMEText(content, 'plain', 'utf-8')) # 使用更稳定的SMTP连接方式 server = smtplib.SMTP_SSL(SMTP_SERVER, 465, timeout=30) # 添加调试信息(可选) # server.set_debuglevel(1) # 登录 server.login(EMAIL_ACCOUNT, EMAIL_PASSWORD) # 发送邮件 server.send_message(msg) # 关闭连接 server.quit() print(f" ✓ 已回复: {to_email}") return True except smtplib.SMTPServerDisconnected as e: print(f" ✗ SMTP连接断开: {e}") return False except smtplib.SMTPAuthenticationError as e: print(f" ✗ 认证失败,请检查授权码: {e}") return False except Exception as e: print(f" ✗ 发送失败: {e}") return False def mark_as_replied(mail, email_id): """标记邮件为已处理""" try: # 标记为已读 mail.store(email_id, '+FLAGS', '\\Seen') print(f" 已标记邮件为已读") except Exception as e: print(f" 标记失败: {e}")

9. 获取未读邮件并逐一回复

def process_and_reply(): """主函数:获取未读邮件并逐一回复""" try: # 连接IMAP服务器 print("\n🔌 正在连接IMAP服务器...") mail = imaplib.IMAP4_SSL(IMAP_SERVER, timeout=30) mail.login(EMAIL_ACCOUNT, EMAIL_PASSWORD) mail.select('INBOX') # 搜索未读邮件 status, messages = mail.search(None, 'UNSEEN') if status != 'OK': return 0 email_ids = messages[0].split() if not email_ids: print("📭 没有未读邮件") return 0 print(f"\n📬 发现 {len(email_ids)} 封未读邮件") # 过滤掉系统邮件和黑名单 valid_emails = [] for email_id in email_ids: status, data = mail.fetch(email_id, '(BODY.PEEK[HEADER.FIELDS (FROM SUBJECT)])') if status == 'OK': raw_header = data[0][1] msg = email.message_from_bytes(raw_header) from_raw = msg.get('From', '') sender_email = get_sender_email(from_raw) if should_auto_reply(sender_email): valid_emails.append(email_id) print(f" ✓ 有效邮件: {sender_email}") else: print(f" ⏭ 跳过黑名单: {sender_email}") # 标记为已读避免重复处理 mail.store(email_id, '+FLAGS', '\\Seen') if not valid_emails: print("📭 没有需要回复的有效邮件") return 0 print(f"\n🤖 开始回复 {len(valid_emails)} 封有效邮件...") replied_count = 0 for email_id in valid_emails: print(f"\n--- 处理邮件 ID: {email_id.decode()} ---") # 获取完整邮件内容 status, data = mail.fetch(email_id, '(RFC822)') if status != 'OK': print(f" 无法获取邮件内容") continue raw_email = data[0][1] msg = email.message_from_bytes(raw_email) # 提取邮件信息 from_raw = msg.get('From', '') from_addr = decode_email_header(from_raw) subject_raw = msg.get('Subject', '无主题') subject = decode_email_header(subject_raw) sender_email = get_sender_email(from_addr) print(f" 发件人: {from_addr}") print(f" 邮箱: {sender_email}") print(f" 主题: {subject}") # 提取邮件正文 body = get_email_body(msg) # 生成回复内容 reply_content = generate_reply_content(sender_email, subject, body[:200]) # 发送回复 if send_reply(sender_email, subject, reply_content): replied_count += 1 # 标记已处理 mark_as_replied(mail, email_id) # 等待一下,避免发送过快 time.sleep(2) print(f"\n✅ 处理完成!共回复 {replied_count} 封邮件") return replied_count except imaplib.IMAP4.error as e: print(f"❌ IMAP连接错误: {e}") return 0 except Exception as e: print(f"❌ 处理过程中出错: {e}") import traceback traceback.print_exc() return 0 finally: try: mail.close() mail.logout() except: pass

10. 定时监控并自动回复

在循环内定时执行 process_and_reply函数

def auto_reply_loop(): """持续监控并自动回复""" print("=" * 60) print(f"🤖 自动回复系统已启动") print(f"📧 监控邮箱: {EMAIL_ACCOUNT}") print(f"⏱️ 检查间隔: {CHECK_INTERVAL}秒") print(f"🚫 黑名单: {', '.join(BLACKLIST)}") print("=" * 60) while True: try: process_and_reply() print(f"\n⏰ 等待 {CHECK_INTERVAL} 秒后继续监控...") time.sleep(CHECK_INTERVAL) except KeyboardInterrupt: print("\n\n👋 用户中断,自动回复系统已停止") break except Exception as e: print(f"⚠️ 运行错误: {e}") time.sleep(CHECK_INTERVAL)

11. 测试

if __name__ == '__main__': print(load_config(r'./QQ_mail.txt') ) print(f"开始监控邮箱: {EMAIL_ACCOUNT}") auto_reply_loop()

12. 程序运行结果

PS D:\workspace\email-automation> uv run python monitor.py {'IMAP_SERVER': 'imap.qq.com', 'EMAIL_ACCOUNT': 'spz_0911@qq.com', 'EMAIL_PASSWORD': 'jiugrsrwpmddbadi'} 开始监控邮箱: spz_0911@qq.com ============================================================ 🤖 自动回复系统已启动 📧 监控邮箱: spz_0911@qq.com ⏱️ 检查间隔: 180秒 🚫 黑名单: PostMaster@qq.com, mailer-daemon@qq.com, noreply@qq.com, service@qq.com, spz_0911@qq.com ============================================================ 🔌 正在连接IMAP服务器... 📬 发现 32 封未读邮件 ⏭ 跳过黑名单: noreply@redditmail.com ⏭ 跳过黑名单: noreply@redditmail.com ⏭ 跳过黑名单: noreply@redditmail.com ⏭ 跳过黑名单: noreply@redditmail.com ⏭ 跳过黑名单: noreply@redditmail.com ⏭ 跳过黑名单: noreply@redditmail.com ⏭ 跳过黑名单: noreply@redditmail.com ⏭ 跳过黑名单: noreply@redditmail.com ⏭ 跳过黑名单: noreply@redditmail.com ✓ 有效邮件: campus@mailf.wisdomore.com ✓ 有效邮件: campus@mailf.wisdomore.com ⏭ 跳过黑名单: noreply@redditmail.com ⏭ 跳过黑名单: service@quickjobs.51job.com ⏭ 跳过黑名单: noreply@redditmail.com ⏭ 跳过黑名单: noreply@redditmail.com ⏭ 跳过黑名单: noreply@redditmail.com ⏭ 跳过黑名单: noreply@redditmail.com ⏭ 跳过黑名单: noreply@redditmail.com ✓ 有效邮件: MyClaw@aisecret.us ⏭ 跳过黑名单: no-reply@github.com ✓ 有效邮件: hi@cursor.com ✓ 有效邮件: position-tracking@semrush.com ✓ 有效邮件: product@mailsend1.jijyun.cn ⏭ 跳过黑名单: PostMaster@qq.com ⏭ 跳过黑名单: PostMaster@qq.com ⏭ 跳过黑名单: PostMaster@qq.com ⏭ 跳过黑名单: PostMaster@qq.com ⏭ 跳过黑名单: PostMaster@qq.com ⏭ 跳过黑名单: PostMaster@qq.com ⏭ 跳过黑名单: PostMaster@qq.com ⏭ 跳过黑名单: PostMaster@qq.com ⏭ 跳过黑名单: PostMaster@qq.com 🤖 开始回复 6 封有效邮件... --- 处理邮件 ID: 155 --- 发件人: 智联招聘 <campus@mailf.wisdomore.com> 邮箱: campus@mailf.wisdomore.com 主题: 尊敬的曾同学【智联推荐】盒马前置仓校招专项来啦! ✓ 已回复: campus@mailf.wisdomore.com 已标记邮件为已读 --- 处理邮件 ID: 156 --- 发件人: 智联招聘 <campus@mailf.wisdomore.com> 邮箱: campus@mailf.wisdomore.com 主题: 尊敬的曾同学【智联推荐】盒马前置仓校招专项来啦! ✓ 已回复: campus@mailf.wisdomore.com 已标记邮件为已读 --- 处理邮件 ID: 198 --- 发件人: MyClaw Newsletter <MyClaw@aisecret.us> 邮箱: MyClaw@aisecret.us 主题: 🦞 OpenClaw Instances Widely Exposed ✓ 已回复: MyClaw@aisecret.us 已标记邮件为已读 --- 处理邮件 ID: 274 --- 发件人: Cursor <hi@cursor.com> 邮箱: hi@cursor.com 主题: Here to help ✓ 已回复: hi@cursor.com 已标记邮件为已读 --- 处理邮件 ID: 278 --- 发件人: Semrush Position Tracking <position-tracking@semrush.com> 邮箱: position-tracking@semrush.com 主题: Position Tracking Update (originmattress.com.au) ✓ 已回复: position-tracking@semrush.com 已标记邮件为已读 --- 处理邮件 ID: 279 --- 发件人: 集简云 <product@mailsend1.jijyun.cn> 邮箱: product@mailsend1.jijyun.cn 主题: 欢迎加入集简云! ✓ 已回复: product@mailsend1.jijyun.cn 已标记邮件为已读 ✅ 处理完成!共回复 6 封邮件 ⏰ 等待 180 秒后继续监控...

完整代码

import imaplib import smtplib import time import email from email.header import decode_header from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart import re def load_config(config_file): """加载配置文件(如果需要)""" try: with open(config_file, 'r', encoding='utf-8') as f: config = {} for line in f: if line.strip() and not line.startswith('#'): key, value = line.split('=', 1) config[key.strip()] = value.strip() return config except FileNotFoundError: print(f"配置文件 {config_file} 未找到。使用默认配置。") return {} CONFIG = load_config(r'./QQ_mail.txt') # ---------- 配置区域 ---------- IMAP_SERVER = CONFIG.get('IMAP_SERVER', 'imap.qq.com') EMAIL_ACCOUNT = CONFIG.get('EMAIL_ACCOUNT') # 你的QQ邮箱 EMAIL_PASSWORD = CONFIG.get('EMAIL_PASSWORD') # 替换成16位授权码 CHECK_INTERVAL = CONFIG.get('CHECK_INTERVAL', 180) # 检查间隔(秒) SMTP_SERVER = CONFIG.get('SMTP_SERVER', 'smtp.qq.com') # --------------------------- BLACKLIST = [ 'PostMaster@qq.com', 'mailer-daemon@qq.com', 'noreply@qq.com', 'service@qq.com', 'spz_0911@qq.com' # 自己的邮箱 ] def decode_email_header(header_value): """解码邮件头部信息(处理中文乱码)""" if header_value is None: return "" decoded_parts = [] for part, encoding in decode_header(header_value): if isinstance(part, bytes): try: if encoding: decoded_parts.append(part.decode(encoding)) else: decoded_parts.append(part.decode('utf-8', errors='ignore')) except: try: decoded_parts.append(part.decode('gbk', errors='ignore')) except: decoded_parts.append(part.decode('utf-8', errors='ignore')) else: decoded_parts.append(part) return ''.join(decoded_parts) def get_sender_email(sender_string): """从发件人字符串中提取邮箱地址""" # 匹配邮箱地址的正则表达式 email_pattern = r'[\w\.-]+@[\w\.-]+\.\w+' match = re.search(email_pattern, sender_string) if match: return match.group(0) return sender_string def should_auto_reply(sender_email): """判断是否应该自动回复""" # 检查黑名单 if sender_email in BLACKLIST: return False # 检查是否是系统邮件 system_keywords = ['postmaster', 'mailer-daemon', 'noreply', 'no-reply', 'service'] sender_lower = sender_email.lower() for keyword in system_keywords: if keyword in sender_lower: return False # 检查是否是自己的邮件 if sender_email == EMAIL_ACCOUNT: return False return True def generate_reply_content(original_sender, original_subject, original_content=""): """生成回复内容""" reply = f"""您好, 感谢您的来信! 我是自动回复机器人,已收到您的邮件: 主题:{original_subject} 您的邮件对我们很重要,我会尽快人工回复您。 祝好! {EMAIL_ACCOUNT} (自动回复,请勿直接回复此邮件)""" return reply def send_reply(to_email, subject, content): """发送回复邮件 - 增强错误处理""" try: # 创建邮件对象 msg = MIMEMultipart() msg['From'] = EMAIL_ACCOUNT msg['To'] = to_email msg['Subject'] = f"Re: {subject}" # 添加邮件正文 msg.attach(MIMEText(content, 'plain', 'utf-8')) # 使用更稳定的SMTP连接方式 server = smtplib.SMTP_SSL(SMTP_SERVER, 465, timeout=30) # 添加调试信息(可选) # server.set_debuglevel(1) # 登录 server.login(EMAIL_ACCOUNT, EMAIL_PASSWORD) # 发送邮件 server.send_message(msg) # 关闭连接 server.quit() print(f" ✓ 已回复: {to_email}") return True except smtplib.SMTPServerDisconnected as e: print(f" ✗ SMTP连接断开: {e}") return False except smtplib.SMTPAuthenticationError as e: print(f" ✗ 认证失败,请检查授权码: {e}") return False except Exception as e: print(f" ✗ 发送失败: {e}") return False def mark_as_replied(mail, email_id): """标记邮件为已处理""" try: # 标记为已读 mail.store(email_id, '+FLAGS', '\\Seen') print(f" 已标记邮件为已读") except Exception as e: print(f" 标记失败: {e}") def get_email_body(msg): """提取邮件正文""" body = "" try: if msg.is_multipart(): for part in msg.walk(): content_type = part.get_content_type() content_disposition = str(part.get("Content-Disposition")) # 只提取纯文本内容,跳过附件 if content_type == "text/plain" and "attachment" not in content_disposition: try: payload = part.get_payload(decode=True) if payload: body = payload.decode('utf-8', errors='ignore') break except: try: body = part.get_payload(decode=True).decode('gbk', errors='ignore') break except: pass else: # 非 multipart 邮件 payload = msg.get_payload(decode=True) if payload: try: body = payload.decode('utf-8', errors='ignore') except: body = payload.decode('gbk', errors='ignore') except Exception as e: print(f" 提取正文时出错: {e}") return body[:500] # 限制长度 def process_and_reply(): """主函数:获取未读邮件并逐一回复""" try: # 连接IMAP服务器 print("\n🔌 正在连接IMAP服务器...") mail = imaplib.IMAP4_SSL(IMAP_SERVER, timeout=30) mail.login(EMAIL_ACCOUNT, EMAIL_PASSWORD) mail.select('INBOX') # 搜索未读邮件 status, messages = mail.search(None, 'UNSEEN') if status != 'OK': return 0 email_ids = messages[0].split() if not email_ids: print("📭 没有未读邮件") return 0 print(f"\n📬 发现 {len(email_ids)} 封未读邮件") # 过滤掉系统邮件和黑名单 valid_emails = [] for email_id in email_ids: status, data = mail.fetch(email_id, '(BODY.PEEK[HEADER.FIELDS (FROM SUBJECT)])') if status == 'OK': raw_header = data[0][1] msg = email.message_from_bytes(raw_header) from_raw = msg.get('From', '') sender_email = get_sender_email(from_raw) if should_auto_reply(sender_email): valid_emails.append(email_id) print(f" ✓ 有效邮件: {sender_email}") else: print(f" ⏭ 跳过黑名单: {sender_email}") # 标记为已读避免重复处理 mail.store(email_id, '+FLAGS', '\\Seen') if not valid_emails: print("📭 没有需要回复的有效邮件") return 0 print(f"\n🤖 开始回复 {len(valid_emails)} 封有效邮件...") replied_count = 0 for email_id in valid_emails: print(f"\n--- 处理邮件 ID: {email_id.decode()} ---") # 获取完整邮件内容 status, data = mail.fetch(email_id, '(RFC822)') if status != 'OK': print(f" 无法获取邮件内容") continue raw_email = data[0][1] msg = email.message_from_bytes(raw_email) # 提取邮件信息 from_raw = msg.get('From', '') from_addr = decode_email_header(from_raw) subject_raw = msg.get('Subject', '无主题') subject = decode_email_header(subject_raw) sender_email = get_sender_email(from_addr) print(f" 发件人: {from_addr}") print(f" 邮箱: {sender_email}") print(f" 主题: {subject}") # 提取邮件正文 body = get_email_body(msg) # 生成回复内容 reply_content = generate_reply_content(sender_email, subject, body[:200]) # 发送回复 if send_reply(sender_email, subject, reply_content): replied_count += 1 # 标记已处理 mark_as_replied(mail, email_id) # 等待一下,避免发送过快 time.sleep(2) print(f"\n✅ 处理完成!共回复 {replied_count} 封邮件") return replied_count except imaplib.IMAP4.error as e: print(f"❌ IMAP连接错误: {e}") return 0 except Exception as e: print(f"❌ 处理过程中出错: {e}") import traceback traceback.print_exc() return 0 finally: try: mail.close() mail.logout() except: pass def auto_reply_loop(): """持续监控并自动回复""" print("=" * 60) print(f"🤖 自动回复系统已启动") print(f"📧 监控邮箱: {EMAIL_ACCOUNT}") print(f"⏱️ 检查间隔: {CHECK_INTERVAL}秒") print(f"🚫 黑名单: {', '.join(BLACKLIST)}") print("=" * 60) while True: try: process_and_reply() print(f"\n⏰ 等待 {CHECK_INTERVAL} 秒后继续监控...") time.sleep(CHECK_INTERVAL) except KeyboardInterrupt: print("\n\n👋 用户中断,自动回复系统已停止") break except Exception as e: print(f"⚠️ 运行错误: {e}") time.sleep(CHECK_INTERVAL) if __name__ == '__main__': print(load_config(r'./QQ_mail.txt') ) print(f"开始监控邮箱: {EMAIL_ACCOUNT}") auto_reply_loop()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/23 15:01:18

从内容焦虑到自动化采集:3步构建你的抖音直播内容获取系统

从内容焦虑到自动化采集&#xff1a;3步构建你的抖音直播内容获取系统 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback s…

作者头像 李华
网站建设 2026/5/23 15:01:15

想当AI医生?先搞定这8个医疗VQA数据集再说(附下载与使用指南)

医疗视觉问答实战指南&#xff1a;8大核心数据集深度解析与应用策略 医疗视觉问答&#xff08;Medical Visual Question Answering, Med-VQA&#xff09;作为AI与医疗交叉领域的前沿方向&#xff0c;正在重塑医学影像分析的范式。不同于通用领域的VQA系统&#xff0c;医疗场景对…

作者头像 李华
网站建设 2026/5/23 15:00:58

你必须知道Linux系统的七种优势

正文熟悉电脑的人都知道&#xff0c;Linux 相比较于 Windows 有着众多的优势&#xff0c;所以现在越来越多的电脑用户开始使用 Linux 进行办公、学习。总体来讲&#xff0c;Linux 的优势主要有以下几个方面。一、开源、免费众所周知&#xff0c;不管是微软的 Windows 还是苹果的…

作者头像 李华
网站建设 2026/5/23 14:59:48

1. 问:RAG架构中,检索器和生成器之间存在一个天然的「目标冲突」,请用一句话描述这个冲突的核心是什么。如果要量化评估这个冲突,你会选择哪两个指标来相互制衡?

设计意图:考察是否理解 RAG 的核心矛盾(检索多样化 vs 生成精准性)。 第一步:先给角色定个位 想象一个流水线车间: 检索器(Retriever) 是“仓库管理员”,你给他一个需求,他凭经验从海量货架上抱回一堆可能相关的零件。他怕的是“缺件导致生产停滞”,所以倾向多拿。…

作者头像 李华
网站建设 2026/5/23 14:58:16

别再只用集中式滤波了!联邦卡尔曼滤波在自动驾驶多传感器融合中的保姆级实践指南

联邦卡尔曼滤波在自动驾驶多传感器融合中的工程实践 当特斯拉的Autopilot系统在暴雨中依然稳定运行时&#xff0c;背后是数百个传感器数据的完美融合。传统集中式卡尔曼滤波就像把所有鸡蛋放在一个篮子里&#xff0c;而联邦卡尔曼滤波则像是由多位专家组成的智囊团——每位专家…

作者头像 李华