Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >OpenCV误读发布libpng错误: IEND: CRC错误和未加载图像

OpenCV误读发布libpng错误: IEND: CRC错误和未加载图像
EN

Stack Overflow用户
提问于 2019-01-08 08:36:49
回答 1查看 6.3K关注 0票数 4

以下代码将此错误输出到终端,但未停止执行:libpng error: IEND: CRC error

代码语言:javascript
运行
AI代码解释
复制
import numpy as np
import cv2
import os

# image is stored in the same location as the python file
dir_path = os.path.dirname(os.path.realpath(__file__))
path = dir_path+'/test.png'

# img always gets set as a NoneType
img = cv2.imread(path)

下面是正在讨论的测试映像(是的,它是空白的):

一些Google透露,不久前Anaconda的libpng包有一个bug,可能会导致这个问题,并建议对其进行更新。我这样做没有任何效果,因此,为了更好地衡量,我还返回并确保在我的机器上安装了最新版本的libpng。再说一次,没有变化。

在此基础上,我尝试了许多不同的代码变体和操作条件,但仍然没有改变。具体来说,我试过:

  • 将图像更改为.jpg。错误不会弹出,显然是因为它不再使用libpng,但是图像仍然以NoneType的形式返回。
  • 传入额外的标志,如cv2.IMREAD_GRAYSCALE
  • 在virtualenv中安装opencv ( 3.4.4.19和3.4.5.20)和numpy并运行它。
  • 使用WSL和Raspberry Pi (3.5.3)在我的Windows笔记本电脑(Anaconda 3.6.5)上运行它

顺便说一句,我已经断断续续地使用OpenCV了两年多了,几乎没有什么问题,我的骄傲是,我无法得到如此简单/愚蠢的工作。我即将开始深入到libpng文档中,但我非常感谢您的任何评论或想法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-08 08:54:03

如果在图像上运行pngcheck,它将告诉您IEND块的校验和不正确:

代码语言:javascript
运行
AI代码解释
复制
pngcheck -v blank.png 

输出

代码语言:javascript
运行
AI代码解释
复制
File: blank.png (79830 bytes)
  chunk IHDR at offset 0x0000c, length 13
    2560 x 1600 image, 32-bit RGB+alpha, non-interlaced
  chunk IDAT at offset 0x00025, length 8192
    zlib: deflated, 32K window, fast compression
  chunk IDAT at offset 0x02031, length 8192
  chunk IDAT at offset 0x0403d, length 8192
  chunk IDAT at offset 0x06049, length 8192
  chunk IDAT at offset 0x08055, length 8192
  chunk IDAT at offset 0x0a061, length 8192
  chunk IDAT at offset 0x0c06d, length 8192
  chunk IDAT at offset 0x0e079, length 8192
  chunk IDAT at offset 0x10085, length 8192
  chunk IDAT at offset 0x12091, length 5937
  chunk IEND at offset 0x137ce, length 0
  CRC error in chunk IEND (computed ae426082, expected ae426080)

如果您将文件转储为十六进制:

代码语言:javascript
运行
AI代码解释
复制
xxd image.png > hex

然后在任何普通编辑器中编辑最后一个字节以使其正确,您可以使用:

代码语言:javascript
运行
AI代码解释
复制
xxd -r < hex > recovered.png
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54096034

复制
相关文章
Java二维数组的输出
(i)输出长度“最小长度为5”,所以当长度<=5时,所得为左对齐的长度为5的固定格式。 (ii)当长度>5时,完全输出,并且如输出结果第二行所示,会紧贴右边数据。
全栈程序员站长
2022/09/05
9630
PHP循环输出二维数组的数据
//下面是一个例子 $g_id = isset($_GET['id'])?$_GET['id']:'1';//定义变量$g_id,使用三元运算符是为了避免出现waring $p_id = ($g_id
Yiiven
2022/12/15
2.1K0
内存中的数组
1、数组是一种引用数据类型,数组引用变量只是一个引用,数组元素和数组变量在内存里是分开存放的。 2、引用变量是访问真实对象的根本方式,如果程序中要访问数组对象本身,则只能通过这个数组的引用变量来访问它。 3、实际的数组对象被存储在堆内存中;如果引用该数组对象的数组引用变量是一个局部变量,那么它被存储在栈内存中。
程序员云帆哥
2022/05/12
1.1K0
内存中的数组
二维数组的DP问题
问题:平面上有N*M个格子,每个格子中放着一定数量的苹果。你从左上角的格子开始,每一步只能向下走或是向右走,每次走到一个格子上就把格子里的苹果收集起来,这样下去,你最多能收集到多少个苹果
Meet相识
2018/09/12
7720
JNI:如何操作数组
这类函数可以把Java基本类型的数组转换到C/C++的数组,有两种处理方式,一是拷贝一份传回本地代码,另一个是把指向Java数组的指针直接传回到本地代码。处理完本地的数组后,通过Release<TYPE>ArrayElements来释放数组。
BUG弄潮儿
2022/03/08
4700
Numpy 如何操作数组
数组类型 Numpy类型 # --*--coding:utf-8--*-- from numpy import * """ 复数数组 """ a = array([1 + 1j, 2, 3, 4]) # 数组类型 print('type:', a.dtype) # 实部 print(a.real) # 虚部 print(a.imag) # 复共轭 print(a.conj()) """ 指定数组类型 """ a = array([1, 2, 4, 9, 10], dtype=float32) prin
村雨遥
2022/06/15
5830
Numpy 如何操作数组
java输出数组的方法_java怎样输出数组中的所有元素
调用Array.toString(a),返回一个包含数组元素的字符串,这些元素被放置在括号内,并用逗号分开
全栈程序员站长
2022/11/18
4.8K0
操作系统(4)实验0——准备知识、基本内联汇编、扩展内联汇编
建议在虚拟机中使用Ubuntu 16.04来做实验(其实用18或者更新的也行,但是我还是习惯16的Unity桌面)。
太阳影的社区
2021/10/15
7370
内联汇编很可怕吗?看完这篇文章,终结它!
在 Linux 代码中,经常可以看到在 C 代码中,嵌入部分汇编代码,这些代码要么是与硬件体系相关的,要么是对性能有关键影响的。
IOT物联网小镇
2021/05/13
2.4K0
内联汇编很可怕吗?看完这篇文章,终结它!
java——内存中的数组
2、arr=new int[5],这段代码执行完成后,系统会在堆内存中为该数组分配一块内存空间,并初始化值0,如下图所示:
说故事的五公子
2019/09/11
1.1K0
java——内存中的数组
thinkphp模板中数组的输出
$this->assign('design_img',$design_img); //thinkphp 一维数组输出 <foreach name="design_img" item="vo"> <input type="text" name="design_img[]" value="{$vo}" /> </foreach> //二维数组 <volist name="design_img" id="design_img"> {$design_img.name} </volist> //多维数
PM吃瓜
2019/08/12
2.4K0
Java数组在内存中是如何存放的
当一个对象使用关键字“new”创建时,会在堆上分配内存空间,然后返回对象的引用,这对数组来说也是一样的,因为数组也是一个对象;
田维常
2020/04/21
1.7K0
Java数组在内存中是如何存放的
C++二维数组 | 二维数组输出0-6
C++的二维数组是指具有两个下标的数组,有些数据要依赖于两个因素才能惟一地确定,因此才会引入二维数组。
小林C语言
2020/12/01
8270
C++二维数组 | 二维数组输出0-6
二维数组中的查找
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
用户3003813
2018/09/06
2K0
[剑指offer] 二维数组中的查找
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
尾尾部落
2018/09/04
2.2K0
[剑指offer] 二维数组中的查找
二维数组中的查找
给定一个二维数组,其每一行从左到右递增排序,从上到下也是递增排序。给定一个数,判断这个数是否在该二维数组中。
崩天的勾玉
2021/12/20
1.6K0
二维数组中的查找
给定一个二维数组,其每一行从左到右递增排序,从上到下也是递增排序。给定一个数,判断这个数是否在该二维数组中。
MickyInvQ
2021/10/26
1.8K0
二维数组中的查找
时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 热度指数:1946753
后端码匠
2021/08/18
1.8K0
java中输出数组内容的函数,并将数组内容作为参数_数组的逆序输出
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/08
2.9K0
PHP 中操作数组的知识点
数组的赋值: PHP中的数组既可以做数组,也可以做键值对字典,且不存在限制,非常灵活.
王瑞MVP
2022/12/28
2.4K0

相似问题

内联asm:“`in”的操作数类型错配

35

内联asm和c数组问题

15

如何获得llvm内联asm操作数类型?

13

aarch64-gcc simd内联asm,结果总是0。

13

内联asm jmp --“指令操作数无效”

319
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档