计算机视觉笔记


  • 首页

  • 分类

  • 归档

  • 标签

  • 搜索

OpenCV 读取图片时警告 Premature end of JPEG file

发表于 2017-04-28 |

在用 OpenCV 批量处理图片时,出现了题目所示的警告,直接翻译就是“JPEG 文件过早地结束”。这说明该批图片中存在不完整的文件。一般是由于拷贝、下载不完整造成的。遇到这种情况,首先要定位到底是哪个文件出了问题,然后再修改它。

定位文件

1
2
3
4
5
def check(path):
with open(path, 'rb') as f:
f.seek(-2,2)
if f.read() != '\xff\xd9':
print path

其中 fileObject.seek() 函数,用于定位指针在文件中的位置。

调用方法为:fileObject.seek(offset[, whence])

它包含两个参数:

  • offset 需要偏移的字节数,必要参数
  • whence 从哪个位置开始偏移,默认为 0,代表从文件开头开始算起,1 代表从当前位置开始算起,2 代表从文件末尾算起。

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# test.txt contents:
# ABCDE
>>> f = open(r'test.txt')
>>> f.seek(3) # 从开头偏移三个字节
>>> f.read() # 偏移 3 个字节后开始读取文件
'DE'
>>> f = open(r'test.txt')
>>> f.seek(2) # 从文件开头偏移 2 个字节
>>> f.seek(2, 1) # 第二个参数是1,因此是基于上面的偏移继续偏移 2 个字节,因此当前指针位置在第四个字节
>>> f.read() # 从第四个字节开始读(不包括第四个字节),所以读到第五个字节
'E'
>>> f = open(r'test.txt')
>>> f.seek(-3, 2) # 第二个参数是 2,表示从文件末尾开始偏移,向前偏移 3 个字节
>>> f.read() # 从倒数第三个字节开始读(包括倒数第三个字节)
'CDE'

掌握了这个函数,再回过头理解之前检验 JPEG 文件的代码。其原理就是,检验二进制图片文件末尾两个字节的编码,看它是否为 “\xff\xd9”,如果不是,说明这个图片文件是不完整的。

修改文件

找到这个不完整的文件,用 opencv 读取,然后显示它,发现它确实有部分残缺,修改方法很简单,用 opencv 重新写入文件即可。该操作并不能真正修复缺失的图片信息,但是可以强制给不完整的图片加上结尾编码,使程序不再出现警告。

numpy.lexsort

发表于 2017-04-16 |
1
numpy.lexsort(key, axis=-1)

用于对多个序列进行排序。把它想象成对电子表格进行排序,每一列代表一个序列,排序时优先照顾靠后的列。这里举一个应用场景:小升初考试,重点班录取学生按照总成绩录取。在总成绩相同时,数学成绩高的优先录取,在总成绩和数学成绩都相同时,按照英语成绩录取…… 这里,总成绩排在电子表格的最后一列,数学成绩在倒数第二列,英语成绩在倒数第三列。

阅读全文 »

matplotlib

发表于 2017-04-07 |

本文介绍 matplolib 常用函数,包括设置坐标轴范围、坐标刻度、标签。具体内容请见下方链接:
jupyter notebook

FDDB

发表于 2017-04-07 |

本文简要翻译了 FDDB: A benchmark for Face Detection in Unconstrained Settings.

阅读全文 »

感知机

发表于 2017-04-05 |

空间中有两类线性可分的样本,感知机算法希望找出一条直线(超平面),恰好把这两类点分开。感知机原理很简单,这里研究二维平面的情况,不失一般性。

阅读全文 »

旋转矩阵

发表于 2017-04-01 | 分类于 几何变换 |

问题简述

本文研究几何变换矩阵,以及在 OpenCV 中实现图像的旋转、放缩。

阅读全文 »

Cython 入门教程

发表于 2017-03-11 |

用 Cython 加快 Python 循环速度

本文翻译自该博客
Cython 是 Python 语言到 C 语言的翻译器, 它能让你利用 Python 类似的语法达到接近 C 语言的运行速度。

本文介绍了如何用 Cython 来对单一包含紧凑循环(”tight loops”)的 Python 函数进行加速。在后续的文章中将会介绍关于 Cython 更复杂的应用,例如包含各种函数和类的情况。

阅读全文 »

Hexo 基本操作

发表于 2017-03-05 | 分类于 网站配置相关 |

本文参考了官网文档,主要介绍了 Hexo 文章的写作、生成、部署,以及写作过程中涉及的插入引用、码块、图片、Latex 公式,以及在主页上只局部显示部分文章内容的设置。

阅读全文 »

Hello World

发表于 2017-03-05 | 分类于 网站配置相关 |

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

本文是 hexo 文档的一部分,记录了 hexo 的几个基本命令,通过它们,就可以清空之前的编译、编译新的文件、在本地服务器浏览网站,最终将其上传至 github。在此记录,便于查阅。

阅读全文 »

项目已被 OSX 使用,不能打开

发表于 2017-03-05 | 分类于 日常系统问题 |

问题描述

windows NTFS 格式的移动硬盘经常出现文件不能打开的情况,文件的颜色变浅,双击打开没有反应,右键打开方式,出现提示:项目 “xxx” 已被 OSX 使用,不能打开。如下图所示:
项目已被 OSX 使用,不能打开

阅读全文 »
12
楠有乔木

楠有乔木

11 日志
3 分类
10 标签
GitHub Weibo
© 2017 楠有乔木
由 Hexo 强力驱动
主题 - NexT.Pisces
本站总访问量     您是第个来到的小伙伴