首页 > 解决方案 > 它似乎不保存裁剪的图像

问题描述

我是python的新手。

目前我正在努力解决 cv2 问题。

代码是

import cv2, os, glob
import numpy as np
min_dist = 30
min_r = 15
max_r = 27
hough_ksize = 2.0
w,h = 60,60
#traindata_path = os.path.join(os.getcwd(), "images\\cropped\\testdata")
traindata_path = os.path.join(os.getcwd(), "images\\cropped\\traindata")
os.chdir("images/screenshots")
images = glob.glob("*.png")
numberofphotos = int((open("../cropped/labeldata.txt", "r").read()))
print(numberofphotos)
total = 0
last_img_name = None
img_path = None
for _img in images:
    print(_img)
    img = cv2.imread(_img, cv2.IMREAD_GRAYSCALE)
    circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, hough_ksize, min_dist, minRadius=min_r, 
maxRadius=max_r)
    if circles is not None:
        circles = np.round(circles[0, :]).astype("int")
        for (x, y, r) in circles:
            cropped = img[max(0,int(y-h/2)):int(y+h/2), max(0,int(x-w/2)):int(x+w/2)]
            cv2.imshow("", cropped)
            dt = cv2.waitKeyEx(0)
            if dt == 2490368:
                cv2.imwrite(os.path.join(traindata_path, "up", "%d.png"%(numberofphotos+total+1)), cropped)
                print(os.path.join(traindata_path, "up", "%d.png"%(numberofphotos+total+1)))
                total += 1
                img_path = "up"
            elif dt == 2621440:
                cv2.imwrite(os.path.join(traindata_path, "down", "%d.png" % (numberofphotos + total + 1)), cropped)
                print(os.path.join(traindata_path, "down", "%d.png"%(numberofphotos+total+1)))
                total += 1
                img_path = "down"
            elif dt == 2424832:
                cv2.imwrite(os.path.join(traindata_path, "left", "%d.png" % (numberofphotos + total + 1)), cropped)
                print(os.path.join(traindata_path, "left", "%d.png"%(numberofphotos+total+1)))
                total += 1
                img_path = "left"
            elif dt == 2555904:
                cv2.imwrite(os.path.join(traindata_path, "right", "%d.png" % (numberofphotos + total + 1)), cropped)
                print(os.path.join(traindata_path, "right", "%d.png"%(numberofphotos+total+1)))
                total += 1
                img_path = "right"
            else:
                pass
with open("../cropped/labeldata.txt", "w") as b:
    b.write(str(numberofphotos+total))
print("added %d new images"%(total))

它工作正常。

但它不会将裁剪后的图像保存在裁剪/训练数据中。

我想将裁剪后的图像保存到上、下、右、左文件夹中。

我该怎么办。

标签: pythonopencvcv2

解决方案


推荐阅读