第2章:PyCharm — 你的第一把视觉开发利器

说实话,做计算机视觉开发,选对IDE比选对女朋友还重要(开个玩笑)。我这些年用过VS Code、用过Sublime,甚至还在终端里用Vim硬扛过一段时间。但最后,我还是老老实实回到了PyCharm的怀抱。

为什么?因为PyCharm对Python的支持,尤其是调试功能,真的太强了。你想想看,我们做视觉识别,经常要跟图像数据、模型权重、推理结果打交道。一个不小心,变量值就错了,模型就崩了。这时候,一个好的调试器能救你命。

好,咱们开始吧。

2.1 PyCharm的安装

PyCharm分两个版本:Community(社区版)和Professional(专业版)。

我个人建议:先用社区版。社区版完全免费,功能对于咱们做视觉开发来说,90%的场景都够用。专业版多了远程开发、数据库工具这些,但说实话,前期用不上。

安装步骤很简单:

  1. 去JetBrains官网下载PyCharm Community Edition
  2. 双击安装包,一路Next
  3. 安装时勾选「Add launchers dir to PATH」
  4. 等待安装完成

注意:我曾经遇到过一个问题——安装时没勾选PATH,结果在终端里打不开PyCharm。后来每次都要手动找安装目录,烦得很。所以这一步千万别省。

2.2 设置字体 — 看得清楚,写得舒服

做视觉开发,代码里经常有各种数字、下划线、括号。字体选不好,眼睛真的会瞎。

我个人习惯用JetBrains Mono。这是JetBrains自家出的字体,专门为代码阅读优化过。0和O、1和l、左括号和右括号,一眼就能分清。

设置方法:

  1. 打开PyCharm,进入 File → Settings → Editor → Font
  2. Font选JetBrains Mono,Size我设16(看你自己屏幕分辨率)
  3. Line spacing设1.2,太挤了看着累

小技巧:如果你觉得默认的等宽字体不够清晰,可以试试Fira Code或者Source Code Pro。我团队里有人用Fira Code,说连字效果很酷。但我个人还是喜欢JetBrains Mono,简洁。

2.3 设置快捷键 — 手不离键盘

做视觉开发,调试的时候经常要「下一步」、「步入」、「步出」。如果每次都要用鼠标点,效率太低了。

PyCharm默认的快捷键方案是Windows/LinuxmacOS两套。我建议你直接用默认的,别乱改。除非你有特殊习惯。

常用的几个快捷键,我列出来:

功能 Windows/Linux macOS
运行当前文件 Ctrl + Shift + F10 Ctrl + Shift + R
调试当前文件 Shift + F9 Ctrl + D
单步跳过(Step Over) F8 F8
单步进入(Step Into) F7 F7
恢复程序(Resume) F9 F9
设置/取消断点 Ctrl + F8 Cmd + F8

嗯,这里要注意:F7和F8的区别。F7是进入函数内部,F8是跳过当前行。调试的时候,如果你想知道某个函数内部发生了什么,就用F7。如果只是想看整体流程,用F8就够了。

2.4 PyCharm常用设置

有几个设置,我建议你装好PyCharm后立刻改掉。不然用起来会很不顺手。

2.4.1 自动导入

做视觉开发,经常要import numpy、cv2、torch这些库。手动敲太累了。

设置路径:File → Settings → Editor → General → Auto Import

勾选:Add unambiguous imports on the fly

这样你只要在代码里写 np.array(),PyCharm会自动帮你补上 import numpy as np。省心。

2.4.2 代码格式化

团队协作的时候,代码风格不统一真的很头疼。有人喜欢4空格缩进,有人喜欢2空格。有人喜欢行尾加分号,有人不加。

我建议你设置好PEP 8规范:

File → Settings → Editor → Code Style → Python

然后勾选Optimize importsReformat code。这样每次保存文件,PyCharm会自动帮你整理代码格式。

核心建议:做视觉开发,代码可读性比什么都重要。你写的模型训练脚本,可能半年后自己都看不懂。所以从一开始就养成好习惯。

2.4.3 文件编码

这个坑我踩过。有一次我写了一个中文注释,结果在Linux服务器上跑的时候,全部变成乱码。后来才发现是文件编码没设对。

设置路径:File → Settings → Editor → File Encodings

Global EncodingProject Encoding都设为UTF-8。下面的Default encoding for properties files也改成UTF-8。

2.5 调试 — 视觉开发的核心技能

好,终于到重点了。调试,说白了就是「让代码一步一步跑,看它到底在干什么」。

做视觉识别,调试尤其重要。因为图像数据是二维的,模型输出是高维张量。你光看代码,根本看不出哪里错了。

2.5.1 设置断点

断点就是代码里的「暂停点」。程序跑到这一行,就会停下来,让你查看当前所有变量的值。

设置方法:在代码行号旁边点一下,出现红色圆点就对了。

我常用的断点位置:

  • 图像读取之后(检查图片是否加载成功)
  • 模型推理之前(检查输入张量的形状)
  • 模型推理之后(检查输出结果)
  • 循环内部(检查每一轮迭代的数据变化)

2.5.2 调试窗口

启动调试后,PyCharm底部会出现调试窗口。里面有这几个关键区域:

  • Variables:显示当前所有变量的值。你可以展开列表、字典、张量,看里面的具体内容。
  • Watches:你可以手动添加表达式,比如 img.shape,PyCharm会实时计算并显示结果。
  • Frames:显示当前的调用栈。如果你在函数A里调用了函数B,这里会显示A→B的路径。

个人经验:调试视觉代码时,我经常在Watches里加 img.shapeoutput.shape。这样一眼就能看出数据维度对不对。有一次我发现模型输出的shape是(1, 1000),但预期应该是(1, 10)。原来是分类数设错了。这种bug,不调试根本发现不了。

2.5.3 条件断点

有时候你不想每次循环都停,只想在某个条件满足时停。比如循环1000次,你只想在第500次时看看数据长什么样。

右键点击断点,选择More,然后输入条件表达式。比如 i == 500

这样程序只在i等于500时暂停。省时间,也省耐心。

2.5.4 调试小技巧

最后分享几个我常用的调试技巧:

  • Step Over (F8):跳过当前行,不进入函数内部。适合你确定函数没问题的时候。
  • Step Into (F7):进入函数内部。适合你想看某个函数到底怎么算的。
  • Step Out (Shift + F8):跳出当前函数,回到调用处。适合你进错了函数,想赶紧出来。
  • Resume (F9):直接跑到下一个断点。适合你确认当前这段没问题,想快速跳到后面。

避坑指南:我曾经在调试一个图像预处理函数时,用了Step Into,结果PyCharm跳进了OpenCV的C++源码里。那叫一个崩溃。后来我学乖了,遇到第三方库的函数,直接用Step Over跳过。除非你真的想研究OpenCV底层实现,否则别进去。

好了,PyCharm的基本配置和调试就讲到这里。下一章,我们会正式搭建Python虚拟环境,然后安装OpenCV、NumPy这些视觉开发必备的库。到时候,你就可以在PyCharm里写第一行视觉代码了。

记住:工欲善其事,必先利其器。把IDE调教好了,后面写代码才会顺手。