Pycharm 中用pyqt调pytorch深度学习算法时debug正常但运行时错误代码 -1073741819 (0xC0000005)踩坑记录

问题描述

最近在做一个用pyqt界面与检测算法结合的窗口软件项目,思路是通过登录界面的按钮实现多窗口跳转,在目标检测子窗口中检测图片按钮的槽函数如下所示,其功能实现对选择的图像送入模型并绘制目标框,然后回显到label中。在Debug时一切正常,但是run时却报标题所述错误代码。

一、最初出问题的代码:

        img = Image.open(self.fname)
        img = img.convert('RGB')
        pred = self.model.detect_image(img)
        pred = ImageQt.ImageQt(self.pred)
        self.label.setPixmap(QPixmap.fromImage(pred))       # 注意这两行代码,需要用这种方式来转换PIL与QPixmap格式
        self.label.setScaledContents(True)  # 图片自适应label大小

经网上查阅错误代码很有可能是指访问内存冲突。思来想去最终如此解决
二、解决方案:

		img = Image.open(self.fname)
        img = img.convert('RGB')
        self.pred = self.model.detect_image(img)  # 在构造函数中预定义一个pred属性,该对象是窗口类对象
        self.pred = ImageQt.ImageQt(self.pred)
        self.label.setPixmap(QPixmap.fromImage(self.pred))       # 注意这两行代码,需要用这种方式来转换PIL与QPixmap格式
        # sleep(1)
        self.label.setScaledContents(True)  # 图片自适应label大小

将pred由槽函数的局部变量改为绑定到窗口对象上的类属性,运行就一切正常。

三、出错原因分析
之前的出错原因可能是由于pred是局部对象,在执行窗口程序时,执行完检测按钮的槽函数后局部变量就都回收了,造成回到主程序的时候label访问不到此前图片的内存,故报错。此是需要注意的点,此后的开发过程中应注意

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值