文章目录

  • 缩小代码位置范围
  • 对缩小的范围查找代码
    • shape.py
  • 20200403
  • 20200409
    • 修改了以下`handleDrawing()`里的代码,现在能够把框画成这样子了,但是初始点和实时绘制还不知道怎么处理
    • 后开在这加上这句之后就能将结果准确绘制了,但是实时显示还是没法达到预期
    • 尝试修改这句canvas.py里handleDrawing()函数里的这句
      • 情况1
      • 情况2
      • 情况3
      • 情况4
    • 尝试修改canvas.py里mouseMoveEvent()函数里的这句
  • 20200420

缩小代码位置范围

  • 打断点,开始调试







    发现没啥用,点来点去控制台一点反应都没有


    还是老老实实看源码吧。。。。。

貌似找不到程序入口,哎,还是我技术太渣了。。。。

把断点打在最前面调试:

卧槽,,没法调试啊!!一点调试没一会程序就直接结束了。。。。

只能一个包一个包去看它们的作用了。。

首先:
codecs:貌似用来做编码转换的
distutils.spawn:貌似是用来打包发布自定义python包的
os.path:貌似是用来操作路径的
platform:貌似是用来获取操作系统的信息的
re:正则化表达式
sys:有很多貌似比较有用的功能
subprocess:用于fork子进程,并运行外部程序
functools.partitial:貌似是用来包装函数的,让想要添加默认值的函数调用更加方便
collections.defaultdict:貌似这玩意有点复杂,不好解释
PyQt5:非常方便的图形界面编程库
sip:方便地为C和C++库创建Python绑定。它最初是为了创建PyQT,用于Qt工具包的Python绑定,但是可以用来为任何C或C++库创建绑定。

顺着程序往下看:

  • 从libs.utils导包:

    math.sqrt:用来求数字的平方根的
    hashlib:提供了常见的摘要算法,如MD5,SHA1等等

  • 从libs.settings导包:

    pickle:序列化处理工具
    os:文件/目录方法

  • 从libs.stringBundle导包

看作者写的这个shape模块有点像处理我们的框的模块啊,先打个标记先@@@@

  • 从libs.labelFile导包
    又发现一个:yolo_io.py

    这里面一定能够找到对捕捉鼠标事件的处理函数,到时多看看

对缩小的范围查找代码

前面的import看得差不多了,接下来着重看shape.pyyolo_io.py

shape.py

20200403

shape.py和yolo_io.py貌似也没啥好看的,看了一些PyQt5基础,在QWidget类中看到了按住鼠标拖动的触发事件mouseMoveEvent(),我们是否能直接搜索这个方法找到需要修改代码的未知呢?试试

调试了以下,貌似不是?程序启动时就会调用mouseMoveEvent()函数了

问了下韦工,他说是在handleDrawing()函数里

20200409

修改了以下handleDrawing()里的代码,现在能够把框画成这样子了,但是初始点和实时绘制还不知道怎么处理

# Dontla 20200408 重写handleDrawing()函数# pos就是当前像素点坐标def handleDrawing(self, pos):if self.current and self.current.reachMaxPoints() is False:  # 如果框存在且没有越界(这个是画结果的)# print(self.current) # <libs.shape.Shape object at 0x00000200B63D0E10>initPos = self.current[0]# print(self.current[0])  # PyQt5.QtCore.QPointF(542.9382716049383, 201.8271604938272)    # 方框框的绘制初始点minX = initPos.x()minY = initPos.y()# print(minX, minY)  # 541.9382716049383 199.8271604938272targetPos = self.line[1]  # 方框的绘制结束点maxX = targetPos.x()maxY = targetPos.y()# print(maxX, maxY)# self.current.addPoint(QPointF(maxX, minY))self.current.addPoint(QPointF(maxX, 2 * minY - maxY))self.current.addPoint(targetPos)self.current.addPoint(QPointF(2 * minX - maxX, maxY))self.finalise()elif not self.outOfPixmap(pos):  # 如果框不存在且当前点没有在画布之外(这个是画实时的)self.current = Shape()# self.current.addPoint(pos)    # originself.current.addPoint(QPointF(pos.x(), pos.y()))  # Dontla# self.line.points = [pos, pos]   # originself.line.points = [QPointF(pos.x(), pos.y()), QPointF(pos.x(), pos.y())]  # Dontlaself.setHiding()self.drawingPolygon.emit(True)self.update()


后开在这加上这句之后就能将结果准确绘制了,但是实时显示还是没法达到预期



尝试修改这句canvas.py里handleDrawing()函数里的这句

情况1



情况2



情况3



强制绘制方形失效了,可能是有的地方没弄好

情况4



虽然测试得一脸懵逼,但是还是能推断得出个大概:

这个应该是初始化绘框射线用的,两个点分别是初始化的射线起点和终点,只有设置起点是有用的,设置终点是没有用的

尝试修改canvas.py里mouseMoveEvent()函数里的这句


这个是可以修改绘制的目标点的坐标的

20200420

这一次我决定反过来,从将坐标写入文件的地方从后往前询

ctrl+shift+f项目全局搜索,搜索.write

应该就是箭头所指的这句没错了

在yolo_io.py文件里

一步步往上询:





然后跳到了labelFile.py文件







然后又跳到labelImg.py文件里来了


又跳到canvas.py文件来了

这TM也太多了吧,筛选筛选先

首先:

貌似这样也不好看,不如对shapes变量添加一个监视

监控太复杂了,也是乱七八糟的,还不如一个一个看


看过了,好像没啥,下一个


再看其他的

看是不是这个



真的,太多了,只有初始信号和末尾写入的地方是确定的,其余的地方就像黑箱一样

我去,我有点想放弃了,这破玩意

尝试修改LabelImg,将以对顶角画框改成以对角线相交点向四周画框相关推荐

  1. 修改注册表将日文键盘改成中文键盘

    修改注册表将日文键盘改成中文键盘 二手记本市场里面很多机型来自日本,只需要看键盘上有日文就知道来路了,日文键盘除了6个字母是准的,其他的按键就跟我们常用键盘的格局不太一样,而且按之后出来的字符还和键帽 ...

  2. taishan服务器修改为u盘启动,bios改成u盘启动

    怎么在BIOS界面设置U盘启动呢?这个对于很多想要U盘重装系统的朋友来说非常头疼的事情,相对小白用户来说,BIOS界面的专业性比较强,而且是英文状态,很多朋友直接懵了,那么如何设置U盘启动呢?下面小编 ...

  3. 如何修改网页中的文本内容改成自己希望的数值?

    本篇文章主要讲解,通过浏览器命令和浏览器自带的F12开发者工具,进行修改网页内容的方法教程 日期:2021年12月5日 作者:任聪聪 一.通过F12开发者工具进行修改 进入方式汇总: 1.右击鼠标,显 ...

  4. 如何修改Openwrt 默认配置将AP改成AP+STA模式

    Openwrt 灵活的配置,可以将其改变配置变成AP+STA模式(即无线中继模式),并通过连接上行路由器,使STA连接该设备AP就能直接上网. 中继组网模式: 所有修改都在如下红色部分: 修改文件列表 ...

  5. 修改数据结构记录,将同级数据改成父子集数据

    有name存在的是父级数据,再根据deptCode相同来匹配到同类子集的数据放到父级里面 this.getFatherData = this.list.filter((ele,index) => ...

  6. wr720n刷成网络打印_方便实用!教你如何简单把 usb打印机改成无线打印机!

    原标题:方便实用!教你如何简单把 usb打印机改成无线打印机! usb打印机改成无线打印机 只需三大步骤就可以搞定: 第一.硬件准备 首先你需要有一个带USB接口,能刷openwrt的路由器. 小编用 ...

  7. pt939g联通_尝试修改友华PT939G的省份设置,成功!

    本帖最后由 笑西风 于 2020-7-4 08:04 编辑 个人感觉友华PT939G无线光猫一体机的配置还不错,核心跟新路由三相同,所以总想折腾它.之前找了各类root/1234,user/1234之 ...

  8. 手游服务器ip 修改密码,手机挂常用ip改QQ密码技巧

    手机挂改密码: 具体步骤: [1]手机(必须是智能机)上要先安装两个软件:手机QQ(08.09.10.11版本都可以)和opera mobile浏览器8 (安装方法用手机浏览器登陆m.opera.co ...

  9. 正点原子Linux 触摸芯片改成GT911后的驱动修改(单点和多点触摸)

    目录 单点触摸 设备树修改 编译设备树和驱动模块并运行 运行测试 多点触摸 野火的Linux的触摸芯片就是用的GT911,如果用GT911替换原来正点原子的FT5x06或者GT9147,需要做一些修改 ...

最新文章

  1. Bootstrap 模态框上下居中
  2. CF982 C Cut 'em all!【树/DFS/思维】
  3. 2021年春季学期-信号与系统-第三次作业参考答案-第八道题
  4. 修改html时webpack热更新,利用webpack实现对html文件的热更新
  5. 基于koa2开发的用户中心
  6. 安装 | MatlabR2019b: License Manager Error -8. License checkout failed.
  7. 定时自动刷新网页在线工具分享
  8. C# 普通权限运行程序\非管理员运行\降低权限运行
  9. 前端学习(1797):前端调试之css伪元素
  10. I begin to keep a daily
  11. Bash脚本删除相对路径下小于指定大小的文件
  12. quartz集成到springboot_一个用来学习 spring boot 的开源项目,总共包含 57 个集成demo...
  13. 高通滤波器的电压传递函数_一次弄懂低通、高通、带通、带阻、状态可调滤波器!...
  14. 学计算机逻辑思维能力测试题,逻辑思维题(逻辑思维能力测试20题)
  15. Python 查找算法_众里寻他千百度,蓦然回首那人却在灯火阑珊处(线性、二分,分块、插值查找算法)
  16. 信阳师范学院计算机老师,信阳师范学院计算机与信息技术学院导师教师师资介绍简介-郭华平...
  17. mysql 字段 decimals_[转]分析MySQL数据类型的长度【mysql数据字段 中length和decimals的作用!熟悉mysql必看】...
  18. 配置华为防火墙接口IP地址和区域
  19. 重磅!Amazon发布个人免费的AI编程助手:CodeWhisperer !
  20. 主叫用户、被叫用户、局内呼叫、局间呼叫、发话端局、受话端局 等定义

热门文章

  1. X Window概述
  2. python数据分析常见面试题_python数据分析方向,面试题解答
  3. armax函数 matlab 源码_将可读性不强的MATLAB公式样式转为直观的LaTeX样式
  4. 【MD5】加密/解密大小写问题
  5. 【转】SAP 权限设定、分配及传输
  6. 【财务思维课】固定资产是应该买呢还是租或是借呢?
  7. 2019年需要探究的十大战略性技术趋势
  8. 程序员发现 Bug 的时候是怎样一种心境?
  9. 生产订单修改记录的跟踪方法!
  10. SAP的号码范围(number range)SNRO和SNUM自动编号工具的用法