要实现在原界面显示旋转图像,可以使用matplotlib的FigureCanvasTkAgg和NavigationToolbar2TkAgg模块。\n\n首先,需要导入以下模块:\npython\nfrom matplotlib.figure import Figure\nfrom matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg\n\n\n然后,在创建界面时,创建一个Figure对象和一个Canvas对象,用于显示旋转图像:\npython\nself.fig = Figure(figsize=(5, 5), dpi=100)\nself.canvas = FigureCanvasTkAgg(self.fig, master=self.root)\nself.canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=1)\n\n\n接下来,在旋转图像的代码中,将图像显示在Figure对象中:\npython\nplt.figure(self.fig.number)\nplt.subplot(1, 1, 1), plt.imshow(img_rot_mat_30), plt.title('60°')\nself.canvas.draw()\n\n\n最后,创建一个NavigationToolbar2TkAgg对象,用于显示工具栏:\npython\ntoolbar = NavigationToolbar2TkAgg(self.canvas, self.root)\ntoolbar.update()\nself.canvas._tkcanvas.pack(side=tk.TOP, fill=tk.BOTH, expand=1)\n\n\n这样,旋转图像就会在原界面的Canvas中显示,并且有一个工具栏可以进行缩放、平移等操作。\n\n完整代码如下:\npython\nimport matplotlib.pyplot as plt\nfrom matplotlib.figure import Figure\nfrom matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg\n\nimg = plt.imread(self.path)\n\nwidth, height = img.shape[1], img.shape[0]\nrotate_center = (width // 2, height // 2)\n\nrot_mat_30 = cv2.getRotationMatrix2D(rotate_center, angle=60, scale=1)\nimg_rot_mat_30 = cv2.warpAffine(img, rot_mat_30, (width, height))\n\nsize3 = (int(1.0 * img.shape[1]), int(1.0 * img.shape[0]))\nimg_05 = cv2.resize(img, size3)\n\nself.fig = Figure(figsize=(5, 5), dpi=100)\nself.canvas = FigureCanvasTkAgg(self.fig, master=self.root)\nself.canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=1)\n\nplt.figure(self.fig.number)\nplt.subplot(1, 1, 1), plt.imshow(img_rot_mat_30), plt.title('60°')\nself.canvas.draw()\n\ntoolbar = NavigationToolbar2TkAgg(self.canvas, self.root)\ntoolbar.update()\nself.canvas._tkcanvas.pack(side=tk.TOP, fill=tk.BOTH, expand=1)\n\nself.root.mainloop()\n


原文地址: https://www.cveoy.top/t/topic/pFWe 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录