写一个标注图片裁剪的代码
时间: 2023-12-01 13:40:12 浏览: 36
当然可以!以下是一个使用 OpenCV 库进行图片裁剪并进行标注的示例代码:
```python
import cv2
import numpy as np
# 读取图片
image = cv2.imread('image.jpg')
# 创建窗口并设置鼠标回调函数
cv2.namedWindow('image')
points = []
def mouse_callback(event, x, y, flags, param):
if event == cv2.EVENT_LBUTTONDOWN:
points.append((x, y))
# 标注点击位置
cv2.circle(image, (x, y), 5, (0, 0, 255), -1)
cv2.imshow('image', image)
# 注册鼠标回调函数
cv2.setMouseCallback('image', mouse_callback)
while True:
cv2.imshow('image', image)
key = cv2.waitKey(1) & 0xFF
# 按 'r' 键重置标注点
if key == ord('r'):
image = cv2.imread('image.jpg')
points = []
# 按 'c' 键裁剪并退出
elif key == ord('c'):
if len(points) == 4:
# 排序标注点以确保顺序正确
points = sorted(points, key=lambda x: x[1])
if points[0][0] > points[1][0]:
points[0], points[1] = points[1], points[0]
if points[2][0] > points[3][0]:
points[2], points[3] = points[3], points[2]
# 计算标注点的坐标
src_pts = np.float32([points[0], points[1], points[2], points[3]])
dst_pts = np.float32([[0, 0], [300, 0], [300, 300], [0, 300]])
# 透视变换裁剪图片
matrix = cv2.getPerspectiveTransform(src_pts, dst_pts)
result = cv2.warpPerspective(image, matrix, (300, 300))
# 显示裁剪结果并保存
cv2.imshow('result', result)
cv2.imwrite('cropped_image.jpg', result)
cv2.waitKey(0)
break
cv2.destroyAllWindows()
```
请将代码中的 `image.jpg` 替换为你要裁剪的图片路径。运行代码后,将会打开一个窗口显示图片,你可以点击鼠标左键在图片上标注四个点,然后按下 'c' 键进行裁剪并保存结果。按下 'r' 键可以重置标注点。
注意:这只是一个简单的示例,适用于裁剪一个矩形区域。如果需要更复杂的形状或者更多的标注点,请适当修改代码。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)