opencv 打开中文路径图报错

embedded/2024/9/23 8:14:18/

img = cv.imread(中文图, 1)

opencvpythonopencvpythonopencvmodulesimgcodecssrcloadsavecpp_239_cvfindDecoder_imread_Ddownloadpng_cant_openread_file_check_file_pathintegrity_2">[ WARN:0@6.414] global D:\a\opencv-python\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp (239) cv::findDecoder imread_(‘D:/download/中文.png’): can’t open/read file: check file path/integrity

转换编码无法解决

file_path = path.encode(‘utf-8’).decode(‘utf-8’) # 确保路径是UTF-8编码

标准格式打开无法解决

path = os.path.normpath(path)

正确方式,更换打开中文图方法

中文图

完整代码

import timeimport cv2 as cv
import os
import tkinter as tk
from tkinter import filedialog
from tkinter import messageboximport numpy as np
from PIL import ImageTk, Imagedef open_image_dialog():global file_pathfile_path = filedialog.askopenfilename(title="选择图片", filetypes=[("图片文件", "*.jpg;*.jpeg;*.png;*.bmp")])if file_path:print(file_path)display_image()
def convert_to_gray():pass
def display_image():# img = cv.imread(file_path , 1)  # 路径或名字有中文时,无法读取图片img = cv.imdecode(np.fromfile(file_path, dtype=np.uint8), cv.IMREAD_COLOR)rgb_image = cv.cvtColor(img, cv.COLOR_BGR2RGB)# 将 NumPy 数组转换为 PIL Image,并调整大小img = Image.fromarray(rgb_image)img = img.resize((300, 300), Image.LANCZOS)# 将 PIL Image 转换为 PhotoImagephoto = ImageTk.PhotoImage(img)# 在 tkinter 的 Label 上显示 PhotoImageimage_label.config(image=photo)image_label.image = photo  # 保持对 PhotoImage 的引用pass# 创建 tkinter 窗口
root = tk.Tk()
root.title("图片转灰度工具")# 创建一个 Frame 用于放置按钮
button_frame = tk.Frame(root)
button_frame.pack(pady=10)# 创建一个 Label 用于显示图片信息
image_label = tk.Label(root, text="图片展位", font=("Helvetica", 12))
image_label.pack(pady=20)
# 创建一个 Label 用于显示图片标题
image_title_label = tk.Label(root, text="图片path", font=("Helvetica", 12))
image_title_label.pack(pady=5)# 创建一个 Button 用于选择图片,并放置到 Frame 中
choose_button = tk.Button(button_frame, text="选择图片", command=open_image_dialog)
choose_button.pack(side=tk.LEFT, padx=5)# 创建一个 Button 用于转换图片,并放置到 Frame 中
convert_button = tk.Button(button_frame, text="转换为灰度", command=convert_to_gray)
convert_button.pack(side=tk.LEFT, padx=5)# 创建一个 Button 用于取消操作,并放置到 Frame 中
cancel_button = tk.Button(button_frame, text="取消", command=root.destroy)
cancel_button.pack(side=tk.LEFT, padx=5)# 运行 tkinter 主循环
root.mainloop()

| 在这里插入图片描述 | 在这里插入图片描述 |


http://www.ppmy.cn/embedded/8802.html

相关文章

学习springcloud中Nacos笔记

一、springcloud版本对应 版本信息可以参考:版本说明 alibaba/spring-cloud-alibaba Wiki GitHub 这里说2022.x 分支对应springboot的版本信息: Spring Cloud Alibaba VersionSpring Cloud VersionSpring Boot Version 2022.0.0.0* Spring Cloud 202…

LM Studio:一个桌面应用程序,旨在本地计算机上运行大型语言模型(LLM),它允许用户发现、下载并运行本地LLMs

LM Studio是一个桌面应用程序,旨在本地计算机上运行大型语言模型(LLM)。它允许用户发现、下载并运行本地LLMs,支持在Windows、Linux和Mac等PC端部署2510。LM Studio的安装过程涉及访问其官网并选择相应操作系统的版本进行下载安装。安装成功后,用户可以通过该软件选择并运…

企业面对零日漏洞真的就毫无办法吗

在信息科技飞速发展的时代,互联网已深入渗透到方方面面,推动着数字经济、社会治理和国家安全的协同发展。然而,正如硬币的两面,网络的蓬勃发展也带来了严重的网络安全隐患。在这其中,零日漏洞攻击显然成了重要威胁之一…

iOS知识点 --- UITableView优化

iOS 中的 UITableView 是一个非常常见的用于展示列表数据的组件,由于其在滚动时需要实时加载和更新大量单元格,因此对性能要求较高。以下是一些针对 UITableView 的性能优化策略: 合理利用重用机制: 设置正确的 reuseIdentifier 并…

嵌入式linux学习之arm开发板移植ssh

1.下载源码 (1)zlib 下载网址:http://www.zlib.net/fossils/ 教程中版本选择的是: zlib-1.2.11.tar.gz (2)openssl下载网址:https://www.openssl.org/source/mirror.html 教程中版本选择的是: openssl-1.1…

FPGA Quartus IP核 打开使用

两种Quartus版本下的IP核,从使用者的角度来看仅仅是配置界面不同,在参数设置和使用方法上基本一致。本文以“MegaWizard Plug-In Manager”中的FIR Compiler IP核使用为例。 Quartus的FIR IP核属于收费IP,如果是个人学习使用需要对IP核单独破…

61、ARM/串口通信相关学习20240415

一、串口通信:实现PC端串口助手与开发板的字符串通信。 代码: main: #include "uart4.h"int main(){uart4_config();//char a;char s[64];while (1){//a getchar();//putchar(a1);gets(s);puts(s);}return 0;}usrt4.c&#xff…

腾讯EdgeOne产品测评体验—更快更强更安全,安全我选EdgeOne

腾讯EdgeOne产品测评体验—更快更强更安全,安全我选EdgeOne 王婆的瓜可甜? 自 23 年 8 月份 EdgeOne 开放订阅套餐后,腾讯云用户使用 EdgeOne 来为自己网站进行加速和防护的站点数量,呈现爆发式增长趋势。 金融服务业受到的 Web…