为什么我的旋转图像没有正确保存?
Why aren't my rotated images being saved properly?
我需要旋转大约 150 张不同数量的图像,以便我可以使用边界框正确注释我的数据。问题是由于某种原因,在 运行 通过我的代码并输入一些值后,图像文件没有被旋转保存。如何以旋转方式保存这些图像,以便在我重新打开图像文件时它已经旋转?
文件应该被正确覆盖,因为我已经完全删除了文件并以相同的名称保存了一个新文件。
import os
from skimage import io, transform
import cv2
from scipy import ndimage
import scipy.misc
folder_name = r'C:\Users\admin\Desktop\Pedro_Database\Setup_Data\test'
with os.scandir(folder_name) as folder:
for file in folder:
if (file.name.endswith('.bmp')):
path = folder_name + '/' + file.name
img = cv2.imread(path)
rotate = 360
rotated_img = img
while(rotate != 0):
cv2.imshow('image',rotated_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
rotate = int(input("Rotate By: "))
rotated_img = ndimage.rotate(img, rotate, reshape=False)
#os.remove(path)
cv2.imwrite(path, rotated_img)
print(file.name + " saved")
在 运行 这段代码处理两张照片并正常终止后,我重新打开图像文件,它们 100% 没有改变。
我不习惯opencv,但我认为问题出在这一行
cv2.imwrite(path, rotated_img)
它必须放在while
循环中,这样当图像旋转rotated_img = ndimage.rotate(img, rotate, reshape=False)
时,它就会被写入(保存)。如果不是,您的 rotated_img
将在退出 while 循环时与 rotate = 0
保持不变。
另外,如果你想保存所有个旋转的图片,你应该考虑改变path
,例如:path = path + str(i)
,其中i
增加 1.
i = 0
while(rotate != 0):
cv2.imshow('image',rotated_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
rotate = int(input("Rotate By: "))
rotated_img = ndimage.rotate(img, rotate, reshape=False)
i += 1
path_of_rotated_image = path + str(i)
cv2.imwrite(path_of_rotated_image, rotated_img)
print(file.name + " saved") # if you want to print
我需要旋转大约 150 张不同数量的图像,以便我可以使用边界框正确注释我的数据。问题是由于某种原因,在 运行 通过我的代码并输入一些值后,图像文件没有被旋转保存。如何以旋转方式保存这些图像,以便在我重新打开图像文件时它已经旋转?
文件应该被正确覆盖,因为我已经完全删除了文件并以相同的名称保存了一个新文件。
import os
from skimage import io, transform
import cv2
from scipy import ndimage
import scipy.misc
folder_name = r'C:\Users\admin\Desktop\Pedro_Database\Setup_Data\test'
with os.scandir(folder_name) as folder:
for file in folder:
if (file.name.endswith('.bmp')):
path = folder_name + '/' + file.name
img = cv2.imread(path)
rotate = 360
rotated_img = img
while(rotate != 0):
cv2.imshow('image',rotated_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
rotate = int(input("Rotate By: "))
rotated_img = ndimage.rotate(img, rotate, reshape=False)
#os.remove(path)
cv2.imwrite(path, rotated_img)
print(file.name + " saved")
在 运行 这段代码处理两张照片并正常终止后,我重新打开图像文件,它们 100% 没有改变。
我不习惯opencv,但我认为问题出在这一行
cv2.imwrite(path, rotated_img)
它必须放在while
循环中,这样当图像旋转rotated_img = ndimage.rotate(img, rotate, reshape=False)
时,它就会被写入(保存)。如果不是,您的 rotated_img
将在退出 while 循环时与 rotate = 0
保持不变。
另外,如果你想保存所有个旋转的图片,你应该考虑改变path
,例如:path = path + str(i)
,其中i
增加 1.
i = 0
while(rotate != 0):
cv2.imshow('image',rotated_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
rotate = int(input("Rotate By: "))
rotated_img = ndimage.rotate(img, rotate, reshape=False)
i += 1
path_of_rotated_image = path + str(i)
cv2.imwrite(path_of_rotated_image, rotated_img)
print(file.name + " saved") # if you want to print