Closed andrefaraujo closed 7 years ago
This has to do with a changed buffer interface in Python 2 and 3. Can you try keypoints.tobytes() or alternatively np.getbuffer(keypoints) and report back which of the two worked for you?
The np.getbuffer(keypoints)
option worked!
The tobytes()
option did not work, it gave me:
Importing features for 0010.png
Importing features for 0009.png
Importing features for 0008.png
Traceback (most recent call last):
File "scripts/colmap_import.py", line 94, in <module>
main()
File "scripts/colmap_import.py", line 65, in main
keypoints.tobytes()))
sqlite3.ProgrammingError: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings.
If you pull the latest changes from Github, it should be fixed and working for Python 2 and 3. Thanks for reporting. (see https://github.com/ahojnnes/local-feature-evaluation/commit/dba9ce95fd23a297dee6e7220013c756843f3100)
The to_string
version you pushed does not work for me. I get:
Importing features for 0010.png
Traceback (most recent call last):
File "scripts/reconstruction_pipeline.py", line 265, in <module>
main()
File "scripts/reconstruction_pipeline.py", line 231, in main
matching_stats = import_matches(args)
File "scripts/reconstruction_pipeline.py", line 70, in import_matches
keypoints.tostring()))
sqlite3.ProgrammingError: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings.
When I change to using the np.getbuffer(keypoints)
, all works fine.
Also, it looks like some files were deleted? eg, scripts/colmap_import.py
from step 5 in the instructions
Yes, there is a fully automated reconstruction pipeline now. Please, refer to the new instructions.
Oh, it looks like your current version of the instructions still mentions the scripts/colmap_import.py
script. Maybe you want to remove that section not to confuse people :)
But most importantly, I was able to get the scripts/reconstruction_pipeline.py
script to work. (note that I had to do the change to using np.getbuffer(keypoints)
as mentioned a few comments above)
Thanks a lot for your help!
I added back the script. Thanks for the feedback.
Hi,
I was able to follow all steps from the instructions but am having a problem importing features/matches into colmap.
(I am using my own detector/descriptor, but I made sure the writing format is correct, by reading with the provided MATLAB functions and similarly by checking that the
read_matrix
function fromcolmap_import.py
reads the features properly).When running
I get
I have investigated quite a bit, but still cannot figure out what the problem is. It looks like the issue is with
memoryview(keypoints)
. Could this potentially be a python version problem? (are you using python 2.7?)Another thing I am thinking is: is the command (ie, the one that ends in line 65 of
colmap_import.py
) trying to just write the address ofkeypoints
intodata
? I am not familiar with SQL, so apologies if this is a dumb question. If this is the case, maybe I could somehow cast the memory address returned bymemoryview(keypoints)
into an int before passing it into thecursor.execute
call?BTW, when I print as
print(memoryview(keypoints))
(right before the error), I get:<memory at 0x7f39516b4478>
-- does this look like what this should be?Thanks for the help!