问题描述
这是我创建卡通图像的函数代码。我一直在尝试纠正这个问题,但根据 Stack 和 Google 的说法,没有找到解决方案。可能是因为图像并未实际加载,这会导致进一步处理出现问题。
导入 opencv。
import cv2
#function for taking an image
def make_cartoon(file_path):
img = cv2.imread(file_path)
# Get the edges
gray = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
gray = cv2.medianBlur(gray,5)
edges = cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,51,51)
# To blur the coloured version of image
color = cv2.bilateralFilter(img,300,300)
# Creating the Cartoon
cartoon = cv2.bitwise_and(color,color,mask=edges)
return cartoon
#编写代码
import tkinter as tk
from tkinter import *
from cartoonizer import *
from tkinter import filedialog
from PIL import ImageTk,Image
import cv2
top = tk.Tk()
top.geometry('1000x600')
top.title('Cartoonifier')
top.iconbitmap("D:\so_cket\Courses\cartoonifier\Lib\pics\p.png")
top.config(background="white")
def save_cartoon(file_path,cartoon_img):
where = filedialog.asksaveasfilename(filetypes=(('JPEG Files','*.jpg'),('PNG Files','*.png'),("All Files","*.*")),defaultextension=file_path[-4:])
cartoon_img.save(where)
def show_save_button(file_path,cartoon_img):
save_b = Button(top,text="Save Cartoon",command=lambda: save_cartoon(file_path,cartoon_img),padx=10,pady=5)
save_b.place(relx=0.69,rely=0.86)
def convert(file_path):
cartoon = make_cartoon(file_path)
cartoon = cv2.cvtColor(cartoon,cv2.COLOR_BGR2RGB)
cartoon_img = Image.fromarray(cartoon)
cartoon_img.thumbnail(((top.winfo_width()/1.8),(top.winfo_height()/1.8)))
im = ImageTk.PhotoImage(cartoon_img)
label = Label(top,image=im)
label.image = im
label.pack(side="right",expand='yes')
show_save_button(file_path,cartoon_img)
def show_convert_button(file_path):
convert_b = Button(top,text="Cartoonify",command=lambda: convert(file_path),pady=5)
convert_b.place(relx=0.79,rely=0.46)
def upload_image():
file_path = filedialog.askopenfilename()
uploaded = Image.open(file_path)
uploaded.thumbnail(((top.winfo_width()/2.25),(top.winfo_height()/2.25)))
im = ImageTk.PhotoImage(uploaded)
label = Label(top,image=im)
label.image = im
label.pack(side="left",expand='yes')
show_convert_button(file_path)
upload = Button(top,text="Upload an Image",command=upload_image,pady=5)
upload.config(background="#adadee",foreground="white",font=("arial",10,"bold"))
upload.place(relx=0.44,rely=0.86)
top.mainloop()
Exception in Tkinter callback
Traceback (most recent call last):
File "D:\so_cket\Anaconda\pyth\lib\tkinter\__init__.py",line 1883,in __call__
return self.func(*args)
File "D:/so_cket/Courses/cartoonifier/Lib/cartoonifier.py",line 39,in <lambda>
convert_b = Button(top,pady=5)
File "D:/so_cket/Courses/cartoonifier/Lib/cartoonifier.py",line 27,in convert
cartoon = make_cartoon(file_path)
File "D:\so_cket\Courses\cartoonifier\Lib\cartoonizer.py",line 11,in make_cartoon
edges = cv2.adaptiveThreshold(gray,9,9)
cv2.error: OpenCV(4.5.2) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-vi271kac\opencv\modules\imgproc\src\thresh.cpp:1676: error: (-215:Assertion Failed) src.type() == CV_8UC1 in function 'cv::adaptiveThreshold'
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)