无法写入使用 tempfile 创建的文件。命名临时文件



我正试图使用Opencv的imwrite在Python中保存一个图像。图像名称是使用tempfile库随机化的。但是图像没有被保存,因为它抛出错误

"[警告:1@423.481]全球D: \a\opencv-python\opencv-pthon\opencv\modules\imgcodecs\src\loadsave.cpp(773(简历::imwrite_imwrite_('C:\Users\Max\AppData\Local\Temp\Compre_2ia3ttp7.png'(:无法打开文件进行写入:权限被拒绝;。

def contourConversion(imgToNegative, B, G, R):
gray = cv2.cvtColor(imgToNegative, cv2.COLOR_BGR2GRAY)
edged = cv2.Canny(gray, 30, 200)
#cv2.waitKey(0)
# Finding Contours
# Use a copy of the image e.g. edged.copy()
# since findContours alters the image
contours, hierarchy = cv2.findContours(edged, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
counOut_img = cv2.drawContours(imgToNegative, contours, -1, (B, G, R), 2)
return counOut_img
#Master Image is in Red Countours
#Testing Image is in Purple Countours 
MasterConverted = contourConversion(perfect_img, 0, 0, 255)
TestingConverted = contourConversion(test_img, 255, 0, 255)
Out_img_final = cv2.addWeighted(MasterConverted, 0.4,TestingConverted, 0.4, 0)   
tf = tempfile.NamedTemporaryFile(suffix=".png",prefix="Compare_")
#var_name = tf.name
#path = "C:\Users\Max\OneDrive\Desktop\CanspiritInternship\autocamera"
cv2.imwrite(tf.name, Out_img_final)
#cv2.imwrite(os.path.join(path , tf.name),Out_img_final)
cv2.waitKey(0)
#cv2.imwrite("ContourComparison.png",Out_img_final)

NamedTemporaryFile已打开文件并保留一个句柄:

tf = tempfile.NamedTemporaryFile(suffix=".png",prefix="Compare_")

你不能(通常(打开同一个文件写两次。

您正试图再次打开它(使用imwrite(,这应该会失败,因为文件仍然通过NamedTemporaryFile调用打开


%LOCALAPPDATA%(AppdataLocal(是用户可写的。CCD_ 6特别是用户可写的。这就是它的全部目的。

%APPDATA%(AppdataRoaming(似乎也是可写的(在Win10上测试(。该系统不会阻止应用程序相互干扰,也不会阻止你处理这些数据。

这些目录存在于系统的每个用户的中(不仅如此(。您只能触摸自己的用户配置文件中的内容。

您需要在Windows中具有管理员访问权限才能在AppData中执行任何操作。最好的办法就是把图片写在其他地方。

上面的解决方案更可取,但除此之外,您可以以管理员身份运行Python——不确定这是否可行,但请尝试一下。

相关内容

  • 没有找到相关文章

最新更新