what is role of libpng exactly? - libpng

I got security warning to my app from android market.
Google said my app should upgrade libpng version.
I use opencv in the app, and It seems like openCV use libpng library.
But I dont know how libpng library works.
Because I couldnt find libpng library in my project.
Is libpng library installed in OS (or OS`s common lib folder), and all applications refer to the library together ?
And libpng library is official library for viewing .png file ?
(it means libpng is necessary for viewing png files in any OS system like iOS, MacOS, Windows, Unix and etc..)
My understanding is OK ? or Much wrong ?..

Yes, libpng is the library for processing PNG files. The warning is due to a security problem that was fixed in libpng in December 2015 and in OpenCV sometime thereafter. Google allowed six months for people to rebuild their apps with the current version of OpenCV and libpng, then started issuing the warning you're seeing. The same thing happens with apps using COCOS2DX. libpng depends upon zlib, so you should upgrade zlib as well if it isn't current.

Related

libpng error in application compiled by bazel

I am using ubuntu 17.04 to compile tensorflow c++ program related to alexnet that use libpng.
libpng warning: Application was compiled with png.h from libpng-1.6.23
libpng warning: Application is running with png.c from libpng-1.2.53
libpng error: Incompatible libpng version in application and library
When I run the program I get error of uncompatible libpng error and the program halts with segmentation fault.
What is the reason behind it and how can I solve it.
It sounds like you compiled your application with libpng-1.6.23 and at runtime your app tried to use libpng-1.2.53. The two versions are not compatible, so you get a segfault.
There are two possibilities here:
If you're running your program on the same machine you're building on, you have two versions of libpng installed. Use a tool (like slocate) to find the versions and uninstall one of them.
If you're running your program on a different machine(s) than the one you built on. Upgrade libpng to 1.6.23 on those machines.

OpenCV 2.4.3 release cannot be found to download

I am trying to install the Projector-Camera Calibration software available on: http://mesh.brown.edu/calibration/ . The software demands having installed Qt 4.8.4 and OpenCV 2.4.3 on my computer. It cannot work (as far as i know according to my research and INSTALL.txt file in the installation package) with any other versions of Qt and OpenCV. My problem is that OpenCV 2.4.3 version is no longer available anywhere on the Internet to download. It is not even available on the official OpenCV website: http://opencv.org/releases.html . I've tried downloading other versions of OpenCV, but none of them seems to work with this calibration software. More specifically, when I try to execute nmake release command in my Developer Command Prompt for VS 2017, the
LINK : fatal error LNK1181: cannot open input file
'opencv_core243.lib'
message is displayed which is expected because other versions of OpenCV do not have opencv_core243.lib file. I've done everything demanded in INSTALL.txt file, the PATH variable is set properly and everything else.
Can anybody help me with this problem or send me a link for downloading the OpenCV 2.4.3 if it is available somewhere on the Internet?
I don't see why the library should be dependent on that version of OpenCV. From my experience, the camera calibration functions are very stable through different versions.
You should be able to build the library with other versions of OpenCV by editing the file projector-calib.pro from:
# Windows 7
win32:OPENCV_DIR = "C:/opencv/opencv-2.4.3/opencv/build"
win32:OPENCV_LIB_DIR = $$OPENCV_DIR/x86/vc10/lib
win32:CV_VER = 243
to:
# Windows 7
win32:OPENCV_DIR = "C:/{YOUR_PATH}/opencv/build"
win32:OPENCV_LIB_DIR = $$OPENCV_DIR/{x64/x86}/vc12/lib
win32:CV_VER = {VERSION}
and substituting {YOUR_PATH}, {X64/X86} and {VERSION} properly. For OpenCV 2.4.13, for example, {VERSION} is 2413.

cmake: install opencv using external libjpeg library

I have two versions of libjpeg library. One is the system library /usr/lib/x86_64-linux-gnu/libjpeg.so, and the another is the newer one that I have built manually /vol/me/lib/libjpeg.so. I want to install opencv that uses the new library instead of the system one. How can I use cmake/cmake-gui to do that?

EmguCV - nvcuda.dll could not be found

I've been asked to build a real-time face recognition application, and after some looking around I've decided to try EmguCV and OpenCV as the facial recognition library.
The issue I'm having at the moment is trying to get the SDK installed and working. I've followed the instructions found here to try and get it running, but I still can't run the samples. Whenever I try and run them, I get the error
The program can't start because nvcuda.dll is missing from your computer.
Try reinstalling the program to fix this problem.
I've tried most of the usual fixes, such as adding the bin folder to my environment path and copying the dll's into my system32 folder, but none of it seems to work.
EmguCV version 2.4.2.1777-windows-x64-gpu
Windows 8
AMD Radeon HD 6700 series graphics card.
I'm assuming this is an issue with the fact that I dont have an nVidia graphics card, but I'm not sure what I can do about it. For now, I'm going to try recompiling the source rather than using the downloaded .exe, and seeing if that helps.
Any suggestions?
Had the same problem, EmguCV 2.4.2 (no matter if x86 or x64) is compiled with GPU and you have to had nvidia GPU with CUDA support. So, if you want for eg. Fisherfaces from 2.4 in C# - wait for non-GPU release or buy/borrow CUDA card ;)
I happen to have the exact same problem as you. Everything is working fine on my computer (WinXP 32-bit) but not on Win7 64-bit computers.
This was because on my computer I already have OpenCV 2.4.2 installed and when I execute my program the path to the OpenCV dll points to the OpenCV folder and not to the dlls in the EmguCV folder. The original OpenCV dll don't have this dependency on NVidia's driver.
I used Dependency Walker to help me find out what was happening, as suggested here.
This link says that only the -gpu packages have gpu processing enabled but as you say the latest version (2.4.2) only a gpu package and no no-gpu package...
I read here that all I needed was to download the latest NVidia drivers to get the nvcuda.dll file but I downloaded many packages and never found this file: gpu computing sdk, cuda toolkit, display drivers, device drivers...
My workaround, instead of using an older version of EmguCV/OpenCV is to use the original dll from OpenCV 2.4.2.
I just used nvcuda.dll from dll-files.com.
It seems the issue is that the latest version on the site does not contain a non-GPU enhanced download, and that the GPU enhanced download requires an nVidia graphics card for CUDA integration.
I successfully downloaded and run the previous version which does not have GPU enhancements.
I had similar problem.
When I compile and run my application on computer with NVIDIA gpu it works fine.
Problem was when I moved app to another computer.
This second computer has no NVIDIA gpu and it threw 'Emgu.CV.CvInvoke' exception.
After many attempts I fortunately solved this problem.
As you mentioned before for now there is only gpu package for version 2.4.2.
I didn't notice this before.
For me solution was:
Copy files: 'cudart64_42_9.dll' and 'npp_42_9.dll' into Debug (application) folder
Copy file 'nvcuda.dll' into System32 folder.
After this steps aplication works on all computers even without NVIDIA gpu/ CUDA.
Other solution might be using opencv universal gpu version (for now is alpha 2.4.9) link: http://sourceforge.net/projects/emgucv/files/emgucv/2.4.9-alpha/
You can download source EmguCV from GIT and compile it, i have done this and works :
http://www.emgu.com/wiki/index.php/Download_And_Installation#Building_from_Git
It generates a non-GPU version of dlls
Regards.
here's also another copy of the dll's:
http://www.kimchiandchips.com/files/vvvv/nvcuda/
so 2 solutions:
Get NVidia CUDA DLL's from the above link. Ideally rename the 64 or 32bit version to nvcuda.dll based on your required platform. Put next to your opencv dll's
Upgrade to 2.4.9 which has universal GPU support
I also had some problems when doing my dissertation using EmguCV for face recognition.
Try to use the stablest version libemgucv-windows-x86-2.4.0.1717.exe
Try not to use the gpu download, this version has the least bugs and the 32-bit is better than the x64.
when compiling for the first time use visual studio 2012.
With this version you wont need to install all the above mentioned. You can see this example to know it really works : http://sourceforge.net/projects/emgufacerecog/

About installing the open cv library

sir,
I have tried my level best to install open cv library 2.2.0 version.but it has'nt suceeded
it shows that errors in linking the library hughigh,
whether we wanted to insatll the ipp library prior to install the opencv?
please help me ?..............
I can only recommend the install advice on the OpenCV page. If you are using a unix download the source of the library you want to install and then use cmake to install the library. That usually works fine for me.
Try installing the 1.1 version of OpenCV.
The 2.x version is brand new and as of Nov 1 2009 you will have difficulty finding documentation for that. The 1.1 version of OpenCV, on the other hand, is very well documented and you should have no trouble finding online tutorials for your platform that walk you through the installation process step-by-step.
As an aside: "IPP" refers to Intel's Performance Primitives. In the 1.1 version these are entirely optional. OpenCV does not require them. If you have the Performance Primitives installed, however, your OpenCV code may run faster. (For me it cut down my image processing time by a factor of five.) Once you get everything up and running you can purchase the IPP library from intel here: http://software.intel.com/en-us/intel-ipp/

Resources