Unable to read TIFF image using opencv-python - opencv

I am using the opencv with following config:
opencv-python == 3.4.3
python version --> 3.6
os --> Windows 10
I am trying to read a TIFF image using cv2.imread() function but am getting "None" as response. Below is the code I am trying with:
import cv2
img = cv2.imread('abc.tif', cv2.IMREAD_UNCHANGED)
print(img)
The result of this script is None.
I have verified that the given image is available at the required path. The same code works when I try to read a PNG file. I am guessing the problem is with TIFF format. Also, it used to work well with Python 2.7. I recently upgraded to Python 3.6 and since then am having this problem.

I also had this issue in opencv-python 3.4.3.
According to the maintainer of opencv-python, it was an opencv issue, not an opencv-python issue https://github.com/skvark/opencv-python/issues/130. However, the issue seems to be resolved in opencv-python 3.4.5.
So the solution is to upgrade opencv-python.

Related

Unable to install Scipy latest version 1.9.3 on python3.8-alpine image

Trying to install Scipy latest version (1.9.3) on python3.8-alpine image
tiangolo/uwsgi-nginx-flask:python3.8-alpine
is not successful.
Scipy tries to install numpy 1.8.5 and it fails with following error.
ImportError: cannot import name 'Log' from 'distutils.log' (/tmp/pip-build-env-28q9f6x4/overlay/lib/python3.8/site-packages/setuptools/_distutils/log.py)
I can goahead and install lower version of scipy. But I am having issue with Sklearn
While trying to install sklearn, it tries to install latest scipy and it fails.
Is there a way i can enforce scipy version to be installed for sklearn
I had the same problem with alpine and python.
This article shows that alpine images should not be used with python as it:
Make your builds much slower.
Make your images bigger.
On occassion, introduce obscure runtime bugs.
I think that your problem comes from the fact that alpine image does not handle wheels files properly.
I would recommend you to switch from python:3.8-alpine to python:3.8-slim.
The problem comes from setuptools. Pin to a version less than 65. Scipy should build on Alpine from source without issue. One of the scipy continuous integration tests checks this. https://github.com/scipy/scipy/blob/main/ci/cirrus_general_ci.yml#L40.

Updating opencv to version 4.5.1

I need to update opencv to version 4.5.1 because there is a function that is not implemented in my current version 3.4.2. (I need to use the SIFT_create function, when I google a bit it seems that they removed it from 3.4.2 because of a patent. However, I have also heard from someone that this function has a different name in 3.4.2, so if you know this different name this is fine as well. I googled it but couldn't find anything about it.)
I tried updating opencv in the anaconda navigator but that didn't work. I tried typing
pip install opencv-python==4.0.0.21
(if I replaced 4.0.0.21 by 4.5.1 it couldn't find the version), but when I type
cv2.__version__
afterwards it still says I'm using version 3.4.2. I found this post: How to upgrade OpenCV in Anaconda (windows)? which says I should use
conda install -c conda-forge opencv=4.3.0
I do this, both the exact same command and the command with 4.3.0 replaced by 4.5.1 but in both cases I only get version 4.0.0 (which apparently also doesn't have the SIFT_create function).
Any idea what I could do?
In the meanwhile I found the answer myself (or rather: with the help of non-internet people).
The problem was that while trying to update opencv, I ended up having two versions of opencv at once. I had opencv 4.5.1 and at the same time I had opencv-python 4.0.0.21 installed. When importing opencv, it chose to import opencv-python in stead of just opencv. When I deleted the opencv-python this fixed the problem.

Why cv_bridge uses OpenCV 3.2 in ROS Melodic?

I have OpenCV 3.4 installed in Ubuntu 18. I also have installed ROS Melodic according to the website instructions. However, I keep on getting an error that libopencv_core.so.3.2 is required.
I already set my CMakeLists files to point to OpenCV 3.4.
However, I found out that in the file:
/ros/melodic/share/cv_bridge/cmake/cv_bridgeConfig.cmake
there is the following line hardcoded in opencv3.2:
set(libraries "cv_bridge;/usr/lib/x86_64-linux-gnu/libopencv_core.so.3.2.0;/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.3.2.0;/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0").
I tried to change it to 3.4 but I can not rebuild it.
The error I am getting is:
/opt/ros/melodic/lib/image_view/image_view: error while loading shared libraries: libopencv_core.so.3.2: cannot open shared object file: No such file or directory
Why is OpenCV 3.2 hardcoded in cv_bridge and how can I rebuild it with OpenCV 3.4?
Update:
I eventually installed OpenCV 3.2 and it worked properly.
Because opencv development speed is much faster than ROS individual module. And a lot of ROS modules went depreciated after someone left the job.
But that's by no means the end of the day( maybe end of the day for noobs). You can build it directly with any version of opencv core function(besides imshow kind of function) others should perform just fine.
The easiest way is to do is: in the console before executing catkin_make try to execute the following
export CMAKE_PREFIX_PATH=/usr/local:$CMAKE_PREFIX_PATH
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
This should give preference to your custom OpenCV installation when doing the find_package(OpenCV 3.X.0 REQUIRED). Then compile and use the function of that version.
Well if you do have to use 3.4 then I think you have to build ros version of opencv and image transport and cvbridge to the 3.4 if that's what you are targeting.
You can find the link here https://github.com/ros-gbp/opencv3-release The highest they provide seems to be 3.3

OpenCV installation and Java run on Mac

I have a java code that uses OpenCV. Right now I just have to try to run that code. My Mac doesn't have OpenCV. And I need to download 2.4.13 version of OpenCV. I downloaded certain things but I do not understand the exact steps to make it run with my java code. Can someone help me and tell the exact steps to install OpenCV 2.4.13 and run my java code with it?

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.

Resources