Exception in Tkinter callback Traceback (most recent call last): File "C:\Users\lenovo\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1921, in __call__ return self.func(*args) File "D:\study\bishe\program\final\final.py", line 445, in process process_video(video_path,index_row,frame_range,ws) File "D:\study\bishe\program\final\final.py", line 118, in process_video emotion_count[key] = float(emotion_count[key]) / effective_frames ZeroDivisionError: float division by zero
时间: 2023-06-18 15:04:19 浏览: 66
这个错误的意思是你在代码中进行了一个除以0的操作,导致程序运行错误。你需要检查代码,找到除以0的那一行代码,并修改为不会除以0的操作。可能的情况是你的 effective_frames 变量的值为0,你需要在除法操作之前检查一下这个变量的值。你可以加上一个条件语句,判断 effective_frames 是否为0,如果是0,就不进行除法操作,或者对 effective_frames 进行赋值操作。
相关问题
报错:Exception in Tkinter callback Traceback (most recent call last): File "C:\Users\311353\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py", line 1705, in __call__ return self.func(*args) File "F:/工具/软件自启动.py", line 18, in start_program stderr=subprocess.PIPE) File "C:\Users\311353\AppData\Local\Programs\Python\Python37\lib\subprocess.py", line 800, in __init__ restore_signals, start_new_session) File "C:\Users\311353\AppData\Local\Programs\Python\Python37\lib\subprocess.py", line 1207, in _execute_child startupinfo) FileNotFoundError: [WinError 2] 系统找不到指定的文件。
这个错误通常是由于无法找到指定的文件导致的。根据报错信息,看起来是在启动程序时出现了问题。
请确保以下几点:
1. 确认程序路径是正确的,程序路径应该是正确安装 ConfigTool 的路径。你可以手动尝试打开该路径,确保能够找到 ConfigTool.exe 文件。
2. 确认 ConfigTool.exe 文件存在于指定的程序路径中。如果不存在,请检查路径是否正确,并确保已正确安装 ConfigTool。
3. 确保你的 Python 程序具有足够的权限来执行该文件。尝试使用管理员权限运行 Python 程序,或者将 Python 程序所在的文件夹添加到系统的 PATH 环境变量中。
如果问题仍然存在,请提供更多的上下文信息,例如完整的代码和程序路径,以便更好地理解问题并提供帮助。
报错如何解决,Exception in Tkinter callback Traceback (most recent call last): File "C:\Users\86135\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1892, in __call__ return self.func(*args) File "F:\pycharm\实验5\Demo5_2.py", line 38, in count_cells _, contours, _ = cv2.findContours(self.thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) ValueError: not enough values to unpack (expected 3, got 2)
这个错误是因为cv2库在新的版本中,`cv2.findContours()`函数返回值的格式发生了改变。在旧版本中,返回值是3个,包括轮廓、层次结构和近似轮廓点。而在新版本中,返回值是2个,只包括轮廓和层次结构。
要解决这个错误,可以将代码中的3个变量都替换为2个变量,或者使用新版本cv2库的返回值。以下是两种方法的代码示例:
方法一:将3个变量都替换为2个变量
```python
import cv2
import numpy as np
import tkinter as tk
from tkinter import filedialog
class CellCounter:
def __init__(self):
self.root = tk.Tk()
self.root.title("Cell Counter")
self.root.geometry("400x300")
self.img = None
self.thresh = None
self.count = 0
self.img_label = tk.Label(self.root, text="No image selected")
self.img_label.pack(pady=10)
self.btn_select = tk.Button(self.root, text="Select Image", command=self.select_image)
self.btn_select.pack(pady=10)
self.btn_count = tk.Button(self.root, text="Count Cells", command=self.count_cells)
self.btn_count.pack(pady=10)
self.count_label = tk.Label(self.root, text="Cell Count: 0")
self.count_label.pack(pady=10)
def select_image(self):
path = filedialog.askopenfilename(filetypes=[("Image Files", "*.jpg;*.jpeg;*.png;*.bmp")])
if path:
self.img = cv2.imread(path)
self.img_label.config(text="Image: {}".format(path))
self.thresh = None
self.count = 0
self.count_label.config(text="Cell Count: 0")
def count_cells(self):
if self.img is None:
return
if self.thresh is None:
gray = cv2.cvtColor(self.img, cv2.COLOR_BGR2GRAY)
_, self.thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
contours, _ = cv2.findContours(self.thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
self.count = len(contours)
self.count_label.config(text="Cell Count: {}".format(self.count))
def run(self):
self.root.mainloop()
if __name__ == "__main__":
app = CellCounter()
app.run()
```
方法二:使用新版本cv2库的返回值
```python
import cv2
import numpy as np
import tkinter as tk
from tkinter import filedialog
class CellCounter:
def __init__(self):
self.root = tk.Tk()
self.root.title("Cell Counter")
self.root.geometry("400x300")
self.img = None
self.thresh = None
self.count = 0
self.img_label = tk.Label(self.root, text="No image selected")
self.img_label.pack(pady=10)
self.btn_select = tk.Button(self.root, text="Select Image", command=self.select_image)
self.btn_select.pack(pady=10)
self.btn_count = tk.Button(self.root, text="Count Cells", command=self.count_cells)
self.btn_count.pack(pady=10)
self.count_label = tk.Label(self.root, text="Cell Count: 0")
self.count_label.pack(pady=10)
def select_image(self):
path = filedialog.askopenfilename(filetypes=[("Image Files", "*.jpg;*.jpeg;*.png;*.bmp")])
if path:
self.img = cv2.imread(path)
self.img_label.config(text="Image: {}".format(path))
self.thresh = None
self.count = 0
self.count_label.config(text="Cell Count: 0")
def count_cells(self):
if self.img is None:
return
if self.thresh is None:
gray = cv2.cvtColor(self.img, cv2.COLOR_BGR2GRAY)
_, self.thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
_, contours = cv2.findContours(self.thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
self.count = len(contours)
self.count_label.config(text="Cell Count: {}".format(self.count))
def run(self):
self.root.mainloop()
if __name__ == "__main__":
app = CellCounter()
app.run()
```
希望这些方法可以帮助你解决报错问题!