在Google Colab中使用OpenCV通过文件路径加载文件的方法
在Google Colab中配置OpenCV Haar-cascade路径与加载图像的方法
我来帮你梳理下在Colab里搞定OpenCV Haar-cascade分类器路径和图像加载的具体操作,亲测好用:
一、Haar-cascade分类器的路径配置
1. 从Google云端硬盘加载分类器文件
首先得把你的云端硬盘挂载到Colab环境里,执行这段代码:
from google.colab import drive drive.mount('/content/drive')
挂载成功后,你就能直接访问云端硬盘里的文件了。比如你的分类器文件haarcascade_frontalface_default.xml存在云端硬盘的OpenCV/HaarCascades文件夹下,那完整路径就是/content/drive/MyDrive/OpenCV/HaarCascades/haarcascade_frontalface_default.xml。
加载分类器的代码就是:
import cv2 face_cascade = cv2.CascadeClassifier('/content/drive/MyDrive/OpenCV/HaarCascades/haarcascade_frontalface_default.xml')
要注意的是:路径一定要核对准确,少打一个文件夹名或者拼错文件名都会导致加载失败哦!
2. 手动上传分类器文件到Colab
如果不想挂载云端硬盘,直接手动上传也很方便:
- 点击Colab左侧边栏的「文件」图标,然后点「上传文件」,选择本地的分类器文件上传。
- 上传完成后,文件会默认存放在
/content目录下,所以加载路径就是/content/haarcascade_frontalface_default.xml。 - 要是你在Colab里新建了子文件夹(比如
haar_files)并把文件移进去,路径就改成/content/haar_files/haarcascade_frontalface_default.xml。
对应的加载代码:
face_cascade = cv2.CascadeClassifier('/content/haarcascade_frontalface_default.xml')
二、使用OpenCV加载图像的操作
1. 从云端硬盘加载图像
同样需要先挂载云端硬盘(步骤和上面一样),假设你的测试图像test_face.jpg在云端硬盘的Images文件夹下,加载代码如下:
img = cv2.imread('/content/drive/MyDrive/Images/test_face.jpg')
小提示:OpenCV默认用BGR格式读取图像,如果之后要用Matplotlib显示,记得转成RGB格式:
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
2. 手动上传图像到Colab
和上传分类器文件一样,把图像上传到Colab后,直接用/content/开头的路径加载:
img = cv2.imread('/content/test_face.jpg') # 转RGB格式(如果需要的话) img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
完整示例代码
这里给你一个整合了所有步骤的Colab笔记本示例,直接复制就能跑:
# 挂载Google云端硬盘(如果使用云端文件,注释掉这部分可以用本地上传的文件) from google.colab import drive drive.mount('/content/drive') # 导入所需库 import cv2 import matplotlib.pyplot as plt # 加载Haar-cascade人脸分类器(这里用云端路径,可根据实际情况替换) face_cascade = cv2.CascadeClassifier('/content/drive/MyDrive/OpenCV/HaarCascades/haarcascade_frontalface_default.xml') # 加载测试图像(同样用云端路径,可替换) img = cv2.imread('/content/drive/MyDrive/Images/test_face.jpg') img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 人脸检测并绘制矩形框 gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray_img, scaleFactor=1.1, minNeighbors=4) for (x, y, w, h) in faces: cv2.rectangle(img_rgb, (x, y), (x+w, y+h), (255, 0, 0), 2) # 显示检测结果 plt.imshow(img_rgb) plt.axis('off') plt.show()
内容的提问来源于stack exchange,提问作者Oved D
相关产品推荐
相关产品推荐

