写一段代码,可以打开文件夹中的图片进行截图,每截取一次,就将截到的部分保存为BMP格式,截图时按下空格后可以对同一张图片继续截图,按下回车后切换到下一张图,python语言
时间: 2024-01-12 17:03:24 浏览: 70
好的,下面是代码实现:
```python
import os
import cv2
def capture():
# 获取文件夹下所有图片的路径
img_folder = './img_folder'
img_paths = [os.path.join(img_folder, img) for img in os.listdir(img_folder) if img.endswith('.jpg') or img.endswith('.png')]
# 遍历图片进行截图
for img_path in img_paths:
# 打开图片
img = cv2.imread(img_path)
# 定义截图相关参数
img_name = os.path.basename(img_path).split('.')[0] # 图片名称
count = 0 # 截图计数器
cropping = False # 是否在截图模式中
while True:
# 显示图片
cv2.imshow('image', img)
# 监听键盘事件
key = cv2.waitKey(1) & 0xFF
if key == ord('q'): # 按下 q 键退出
break
elif key == ord(' '): # 按下空格键进入/退出截图模式
cropping = not cropping
count += 1
elif key == 13: # 按下回车键切换到下一张图片
break
# 截图模式下,鼠标拖拽选取截图区域
if cropping:
clone = img.copy()
x1, y1, x2, y2 = cv2.selectROI('image', clone, fromCenter=False, showCrosshair=True)
if x2 > x1 and y2 > y1: # 只有选取的区域有效才进行截图
cropped_img = img[y1:y2, x1:x2]
cv2.imwrite(f'{img_name}_{count}.bmp', cropped_img)
cv2.destroyAllWindows()
```
这个代码实现了对文件夹下所有图片的遍历,每张图片可以连续截图并且保存为 BMP 格式,按下回车键后切换到下一张图片。
阅读全文