我真的很痛苦这个问题.
最初,在使用matplotlib绘制内容后,我可以轻松保存图像.
但是,安装scipy之后,我再也无法保存我的图像了.
(我使用pip安装了matplot和scipy.)
我试图查找一些信息,但我仍然无法解决问题.
我的操作系统是Mac OS X Lion(10.7)
我认为以下链接是一些相关问题
https://github.com/ipython/ipython/issues/2710
Matplotlib python savefig运行时错误python 3.2.3
matplotlib和libpng问题ipython notebook
libpng15静态链接问题
看来如果我可以重新链接库或设置DYLD_LIBRARY_PATH(实际上我不知道那是什么......)
或许我必须重新编译一些东西?
顺便说一下,我对基于linux的系统很新,所以如果有人能以一种相对简单的方式解释它,那将是非常好的.非常感谢你.
以下是一些错误消息:
libpng warning: Application was compiled with png.h from libpng-1.5.4
libpng warning: Application is running with png.c from libpng-1.4.10
libpng warning: Incompatible libpng version in application and library
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
/Library/Python/2.7/site-packages/matplotlib/backends/backend_macosx.pyc in save_figure(self, *args)
476 if filename is None: # Cancel
477 return
--> 478 self.canvas.print_figure(filename)
479
480 def prepare_configure_subplots(self):
/Library/Python/2.7/site-packages/matplotlib/backend_bases.pyc in print_figure(self, filename, …Run Code Online (Sandbox Code Playgroud) 我试图在Windows 7 64位上使用C++和Visual Studio Express 2013将一些数据写入PNG文件.我明白要做到这一点,我需要使用外部库,但这里是我遇到一些困难的地方.
我尝试使用LodePNG - 它看起来简单,轻巧,易于使用.问题是,它很简单,并且似乎需要某种像素格式的数据与我所拥有的不匹配.我可以修改我的数据以使其与LodePNG兼容,但我更喜欢使用像libpng这样的库,并且具有更大的灵活性.
但是,我不了解构建或链接库的第一件事,并且libpng已经被证明是一个绝对的噩梦.我尝试按照本指南,设法生成"libpng.lib"和"png.h",但是当我尝试将这些文件包含在我的项目中时(我将两个文件放在我的项目目录中,将"png.h"添加到我的项目中)头文件并将"libpng.lib"添加到链接器的"附加依赖关系"字段中),我收到了大量的构建错误,特别是:
error C1083: Cannot open include file: 'pnglibconf.h': No such file or directory
Run Code Online (Sandbox Code Playgroud)
任何人都可以请教我如何安装libpng,指导我一个关于这个主题的好指南(我很惊讶那里没有指南...),或推荐一个不同的(轻量级,易于安装)PNG图书馆?我在这里疯了.
使用此代码,我尝试从JSON创建签名图像,然后直接在浏览器中显示图像而不保存它.我遇到的问题是我想在HTML文档中显示此图像,因此标题信息已被修改.有没有办法在HTML文档中显示原始图像数据中的图像?或者围绕这个问题的任何其他方式?
$json = $ticket->sig; // get the json representing the signature
$img = sigJsonToImage($json); //get image resource from json
// HERE I WANT TO DISPLAY THE IMAGE BUT GET Cannot modify header information
header('Content-Type: image/png');
imagepng($img, null, 0, PNG_NO_FILTER);
imagedestroy($img);
Run Code Online (Sandbox Code Playgroud) 我正在开发一个使用OpenCV和Tesseract的项目.这两个库都基于libpng,libtiff,libjpeg等来加载/保存图像文件.
但Tesseract(基于Leptonica)使用这些具有不兼容参数的库的旧版本.所以我不能为两者使用相同的图像库:OpenCV和Tesseract.
因此,如果我动态编译我的项目,我将不得不用我的项目提供一堆DLL.如果我静态编译,我会产生一个巨大的输出文件,炸成几兆字节.
这是UGLY.我不希望这样.
另一个问题是几乎所有开源项目 - 主要是在Linux/MAC世界中开发 - 如果在Windows上编译,则不支持Unicode.在内部都传递std::string到fopen().在Linux上,使用UTF8编码路径的解决方法可能会起作用,但在Windows上它不会.因此,日语用户无法在具有日语名称的文件夹中打开图像文件.虽然微软已经在1990年代早期做出了巨大努力,将整个Windows NT操作系统转换为100%兼容Unicode,但20年后的大多数开源项目(如libpng)仍然不支持传递路径std::wstring.
重要信息:OpenCV命令imread(),imwrite()如果要创建支持日语或中文的国际项目,则不得在Windows上使用!
所以,我想要的是:从我的项目中完全消除libtiff,libpng,libjpeg等:
在OpenCV评论中:
// #define HAVE_JASPER
// #define HAVE_JPEG
// #define HAVE_PNG
// #define HAVE_TIFF
etc..
Run Code Online (Sandbox Code Playgroud)
在Tesseract/Leptonica:
#define HAVE_LIBJPEG 0
#define HAVE_LIBTIFF 0
#define HAVE_LIBPNG 0
#define HAVE_LIBZ 0
#define HAVE_LIBGIF 0
#define HAVE_LIBUNGIF 0
etc..
Run Code Online (Sandbox Code Playgroud)
..并使用GDI +代替,它是Windows操作系统的一部分,支持加载/保存BMP,TIF,PNG,JPG,GIF.此外,GDI +与Unicode兼容.
我知道这可以通过几行代码来完成,但OpenCV项目中缺少这样一个有用的类.我的第一次试验表明,这并不像第一次看起来那样微不足道,因为必须进行大量的转换.
是否有为此目的而制作的课程?
每次我尝试在我的 Fedora 机器上打开我的 genymotion 我总是得到错误
libpng12.so.0: cannot open shared object file
Run Code Online (Sandbox Code Playgroud)
在互联网上搜索后,我看到了一个关于使用的答案yum provides */libpng12.so.0
,终端提示我:
libpng12-1.2.50-5.fc20.i686 : Old version of libpng, needed to run old binaries
Repo : fedora
Matched from:
Filename : /usr/lib/libpng12.so.0
libpng12-1.2.50-5.fc20.x86_64 : Old version of libpng, needed to run old
: binaries
Repo : fedora
Matched from:
Filename : /usr/lib64/libpng12.so.0
libpng12-1.2.50-6.fc20.i686 : Old version of libpng, needed to run old binaries
Repo : updates
Matched from:
Filename : /usr/lib/libpng12.so.0
libpng12-1.2.50-6.fc20.x86_64 : Old version of libpng, …Run Code Online (Sandbox Code Playgroud) 我的是win7 64位家庭版。我的所有项目都设置为使用 C++ 在 32 位环境中构建。我已经使用 MDd 运行时在调试模式下成功构建了 libpng。我有两个正在进行的项目。我的第一个项目是在 VS2010 中,第二个项目是在 VS2012 中。在我的计算机中,我创建了一个环境变量,设置为该库的路径,以使我的项目中的链接更容易。我的两个项目都使用 MDd 以及多字节,这与 libpng 使用的相同。我的所有路径和依赖项都是正确的。我还将 libpng16.dll 复制到两个项目中与其构建的可执行文件位于同一目录中。我可以成功编译和构建这两个项目。我的 VS2010 项目运行并渲染加载的 PNG 图形,但我在 VS2012 中的项目却不能。当我调用 png_read_png 抛出和未处理的异常时,它崩溃了:
check = fread( data, 1, length, png_voidcast( png_FILE_p, png_ptr->io_ptr ) );
Run Code Online (Sandbox Code Playgroud)
在 pngrio.c 内。给出这个错误:
First-chance exception at 0x77308E19 (ntdll.dll) in Game_debug.exe: 0xC0000005:
Access violation writing location 0x00000014.
Run Code Online (Sandbox Code Playgroud)
问题不在我的源代码中,因为我知道它在我的 VS2010 项目中工作,并且我使用相同的实现在我的 VS2012 项目中加载 png。我不确定我链接到的库是在 VS2010 中构建的,或者 VS2010 构建的库中是否有一些我的 VS2012 项目不喜欢的命令行/编译器设置。我已经阅读了 png 文档并在网上搜索了几个小时,但似乎找不到任何相关内容。任何形式的帮助、提示、指示或建议都会对我有很大帮助。
c++ access-violation first-chance-exception libpng visual-studio-2012
我正在阅读从互联网上获取的图像,然后立即读入 python 中的 OpenCV,如下所示:
# read in image as bytes from page
image = page.raw_stream.read()
frame = cv2.imdecode(np.asarray(bytearray(image)), 0)
Run Code Online (Sandbox Code Playgroud)
我收到 libpng 警告:
libpng warning: iCCP: known incorrect sRGB profile
Run Code Online (Sandbox Code Playgroud)
如何在读取之前剥离 sRGB 配置文件?人们建议在阅读 png 文件之前通过 imagemagick 来完成此操作,但这对我来说是不可能的。有没有办法直接在Python中做到这一点?
编辑:
如果我使用https://uploadfiles.io/m1w2l上的文件运行并使用以下代码,我无法获取下面答案中的代码来解决我的问题:
import cv2
import numpy as np
with open('data/47.png', 'rb') as test:
image = np.asarray(bytearray(test.read()), dtype="uint8")
image = cv2.imdecode(image, cv2.IMREAD_COLOR)
Run Code Online (Sandbox Code Playgroud)
我收到同样的警告
我正在尝试在以下机器上运行 Quartus 13.0:
parrot 4.18.0-parrot10-amd64 #1 SMP Debian 4.18.10-1parrot10 (2018-10-06) x86_64 GNU/Linux.
Run Code Online (Sandbox Code Playgroud)
我已经完成了 Quartus 13.0 的安装,当我尝试执行它时出现以下错误:
quartus: error while loading shared libraries: libpng12.so.0: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我已经阅读了堆栈溢出和其他网站中的所有相关问题,但没有人为我工作。
在寻找那个文件时,我找到了它。我试图做一个硬链接,但它也不起作用。搜索结果:
??[pepbd@parrot]?[~]
???? $ls -ld $(locate -r libpng.*\.so.*)
lrwxrwxrwx 1 root root 19 nov 19 17:09 /usr/lib/x86_64-linux-gnu/libpng16.so.16 -> libpng16.so.16.34.0
-rw-r--r-- 1 root root 210864 jul 10 13:17 /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0
-rw-r--r-- 1 root root 18272 oct 14 21:59 /usr/lib/x86_64-linux-gnu/vlc/plugins/codec/libpng_plugin.so
Run Code Online (Sandbox Code Playgroud) 嗯...有点自我解释。我使用Xcode 4和Allegro。
我正在用C语言编写一个OpenGL程序,它实现了alpha透明的Bill Boarding粒子,它通过pnglib使用PNG(透明度)作为纹理.但是,我发现粒子的透明区域仍然会替换它前面的粒子.换句话说,新调用的粒子虽然在某些区域是透明的,但是完全重叠在它们之前调用的一些粒子,相反,那些先前称为粒子的粒子应该透过透明度来显示.
为了可视化它所具有的效果,我附上一些图像来显示问题:
最初我称这些粒子从最老到最新: 
但是,当视图更改时,重叠效果显而易见: 
当我决定撤销通话顺序时,我得出相反的结论:

我认为解决这个问题的方法是将粒子从最远离相机调到最近.然而,遍历每个活动粒子,从最远到最近的顺序排序,然后每个显示帧调用每个粒子,计算量很大.我希望找到一个更简单,更有效的解决方案.我已经试过了,glBlendFunc()但没有sfactor或dfactor似乎工作.
在这里,在 GitHub 存储库中给出了 png.h 库源代码(https://github.com/LuaDist/libpng/blob/master/png.h)。但也有,他们直接使用数据类型png_byte。我正在寻找这种数据类型的声明。
libpng ×12
c++ ×5
c ×3
opencv ×2
png ×2
allegro ×1
debian-based ×1
fedora ×1
gdi+ ×1
genymotion ×1
html ×1
libjpeg ×1
macos ×1
matplotlib ×1
opengl ×1
parrot-os ×1
particles ×1
php ×1
python ×1
python-3.x ×1
quartus ×1
srgb ×1
transparent ×1
unicode ×1
zlib ×1