Solved Opening .tiff geoimages consumes enormous memory
-
This post is deleted! -
Hi
Why this old version ?Anyway, what are you trying ?
Building PyQT4 from source ?
Also is there any reason you want to use the competing Qt binding from another company instead of the
official support one called pyside2 ?
https://pypi.org/project/PySide2/
https://doc.qt.io/qtforpython/ -
I don't know what goes wrong...
I just try to handle large tiff images instead of using opencv (that makes my program realy slow) with QTimagereader
Sorry, I didn't identify it was a competing company...just a result in google when tried to install PyQt4
Ok, I will look at it.
-
@john_hobbyist
Hi
Np I just wondered why you want Qt4 version and build from the source when
PyQt5 is there and seems to be installable directly.
Also here is how to use it
https://programtalk.com/python-examples/PyQt5.Qt.QImageReader/
Do note none of them use setClipRect to load image in chunks but
should be easy to add. -
QtImagrReader is for sure not the correct way to handle geotiff. Either use openCV or better gdal for such tasks.
-
I am trying GDAL in order to print the image:
from osgeo import gdal import sys ds = gdal.Open('UAV_image.tif') print(ds)
and I get this error:
<osgeo.gdal.Dataset; proxy of <Swig Object of type 'GDALDatasetShadow *' at 0x7fb89062b840> >
Any idea what I am missing here?
-
@john_hobbyist said in Opening .tiff geoimages consumes enormous memory:
Any idea what I am missing here?
Nothing. All is fine.
-
Why I cannot see the image?
-
The Python print function only print strings or a string representation of the object.
Check if GDAL provides a widget or equivalent for that.
-
Ok, until now OpenCV requires ~24GB RAM, gdal does not work. Is there any QImageReader sample code to open the .tif? I am searching the google for this...nothing found.
-
@john_hobbyist
Hi
in what way did GDAL not work ?Also, Mr @Christian-Ehrlicher made me realize that geotiff is a special tiff so
even QImageReader can read an image in sections. it might not really do what you want.What do you need to do to this image ?
-
@john_hobbyist I wonder what you want to do with this image when you even don't know the basics of this format... it's a georeferenced image with multiple images and bands inside. It's not a simple picture at all.
-
@mrjj and @Christian-Ehrlicher:
I want to open it and do some zooming with code I use. Also I want to read the coordinates from the image (I do not how, but I am searching it)
-
@john_hobbyist
Ok then QImageReader is not the way as it can't access any coordinates.I think you gave up on GDAL too fast. It's whats people seem to use.
-
@mrjj: yes with
gdalinfo
command on the terminal I get the information I want...
Is there any way to get these information from the terminal and feed it to my python code for further processing? In other words how do I read information posted in terminal and use it inside my python code?Ok, I will try again gdal to open the .tif
-
@john_hobbyist
Hi
well yes, you could call gdalinfo with QProcess
https://www.learnpyqt.com/tutorials/qprocess-external-programs/
read the section with "Getting data from the QProcess" -
Hello,
Ok I read it.What is wrong in this code, and I cannot run the command via python command:
import sys import time def flush_then_wait(): sys.stdout.flush() sys.stderr.flush() time.sleep(0.5) sys.stdout.write('gdalinfo UAV_image.tif') flush_then_wait()
on the terminal I run gdalinfo UAV_image.tif and prints me the metadata of the .tif, but I cannot run it through the python script
-
@john_hobbyist
hi
That code only prints the text to the console.
It does not try to run gdalinfo
The first part is just a test script to run that shows some output.You want the part with
p = QProcess()
p.start("ffprobe", ['-show_format', '-show_streams', 'a.mp4.py'])(replace the program and parameters)
also to read the result, you should also read the
"Getting data from the QProcess" partYou want to use the full Python program shown near teh end. it sets up reading from the process.
-
Ok, I understand the:
p = QProcess() p.start("python", ["dummy_script.py"])
but not
p.start("ffprobe", ['-show_format', '-show_streams', 'a.mp4.py'])
I assume that I put "python" on "ffprobe" but what I put on '-show_format', '-show_streams' ??
Thanx
-
@john_hobbyist
Hi
The first one, starts the python app with the parameter of a script nameThis one
p.start("ffprobe", ['-show_format', '-show_streams', 'a.mp4.py'])calls the app ffprobe with 4 parameters.
So you would do
p.start("gdalinfo ", ['UAV_image.tif'])
you might need a full path to the UAV_image.tif instead of just the name.