作业:1、用PIL包显示原始图片,然后将原始图片数据对其中一个通道拿出来显示(总共有三个通道)。2、用cv2.l ine划线函数释一张图片的人险给知起来,并将框起来的人临离片保存下来
时间: 2024-09-15 21:03:51 浏览: 63
作业描述如下:
1. **使用PIL库显示图片及单通道数据**:
- 首先,你需要安装Pillow库,它是Python Imaging Library的一个分支,用于处理图像。安装方式同样通过pip,例如 `pip install pillow`。
- 使用PIL读取图片,例如 `from PIL import Image`
- 加载图片:`img = Image.open('image.jpg')`
- 显示整个图片:`img.show()`
- 对于RGB图像,你可以选择某一通道的数据,比如红色通道(索引0),然后转换成灰度图展示,代码示例:
```python
red_channel = img.convert('L')
red_channel.show()
```
2. **使用cv2画直线并裁剪人脸**:
- 需要先安装OpenCV库,如上所述。
- 读取图片:`import cv2; image = cv2.imread('image.jpg')`
- 使用`cv2.CascadeClassifier`加载预训练的人脸检测模型:
```python
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
```
- 检测人脸并画线:
```python
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)
for (x, y, w, h) in faces:
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2) # 绿色表示边框
cropped_face = image[y:y+h, x:x+w]
```
- 最后保存裁剪后的图像:
```python
cv2.imwrite('cropped_face.jpg', cropped_face)
cv2.imshow('Detected Faces', image)
cv2.waitKey(0) # 等待用户按键关闭窗口
```
记得替换上述代码中的'image.jpg'为你的实际图片路径。
阅读全文