shaunhwq / visual_comparison Goto Github PK
View Code? Open in Web Editor NEWA comparison tool to aid image/video enhancement research
License: MIT License
A comparison tool to aid image/video enhancement research
License: MIT License
For example, zoom manager currently uses cv2.putText to write error messages on the image
A message box might be a better solution
Is tkinter able to handle the automatic scaling? If so could we remove the frame interpolation method we use in the display widget.
Unable to reset zoom when using windows.
Check all keybindings to ensure correctness on windows and mac.
Might want to add separate class for keyboard bindings, which inherit from some base keybinding class
Number sorting is treated as text and is not sorted properly
possible solution is to call .sort() with key casting to data type.
Can separate UI elements and app functionality.
Callbacks can be connected to the functions in the UI elements later
Search for a file and display it.
[mpeg4 @ 0x1314b2e00] dimensions too large for MPEG-4
Not sure what is the cause, self.focus_get() does not solve it.
Modify GetIntBetweenRangePopup, validate_int_str, validate_float_str
Can combine the code
Set corner_radius to 0 for all ctk objects when necessary
click on button to save the image/video comparison
Seems like video is more complex to implement: What if the user wants to contol comparison method?
Start program, click on concat. Changes to concat mode.
Click on compare. Should go to compare mode but remains as concat mode
When image size changes, the text becomes larger/smaller, hard to see.
A consistent font size for all images with scale of 1 = width of image for X number of characters is better.
All images has extra text in top left corner after switching from specific mode to comparison mode.
Reproduction:
Video recording to show comparison results
Ref:
visual_comparison/utils/file_utils.py", line 38, in get_filenames
file_paths = [os.path.splitext(file_path)[0] for file_path in os.listdir(folder_path) if file_path[0] != "."]
Raise error when root folder with '.mp4' files or any other extensions,
Currently we need to initialize all caps when changing index which leads to slow performance when 'a' or 'd' is held.
Optimization ideas:
Works for Windows/Apple devices
Color space might be incorrect when reading with opencv
Windows and Linux have white color backgrounds for preview window and widgets which use treeviews
If there are too many methods and we change to concat mode, shown images might appear out of the screen.
Should shift window such that all images can be seen (shift to the middle)
Currently using --root to specify directory to compare.
We could add a button to allow users to change the directory using a button instead.
Possible workflow:
Disappears immediately after creation.
Replicate with the steps:
Click on file idx button
Enter idx out of bounds
Let user choose which color space they want to convert images to for display.
Wrapper class for interfacing with the widget easily
Similar to 1-9 keybindings but using 2 keys only
e.g. k & l for switching 'left' & 'right',
method idx = 5
press k 4 times, switch from 5 to 4, 3, 2, 1
Press l 2 times, switch from 1, to 2, 3
Useful for strength comparisons, can easily flash between same method different strength
When video slider is clicked, we set cap to value / 100 * first_video_cap.get(cv2.CAP_PROP_FRAME_COUNT) for all videos.
Video after that is out of sync. Appears to be a cv2 issue.
However, when video is playing normally there is no sync issue.
Now we do text size adjustment according to the image size
However, when image is too large, text tends to be very thin
Show a progressbar when loading files to update users on current status
Add a progressbar widget or use customtkinter's
Currently popup might appear out of bounds, have to shift mouse which is quite inconvenient.
Not sure if opencv's imwrite/videowriter assumes a particular color space. Need to ensure that saved content is correct
Sometimes ffprobe has missing metadata, can let the user choose what is the default color space to use for video reading.
Users might want to restore to defaults.
Maybe have 1 button to restore default for each setting, but might appear cluttered.
Let users customize settings for the application.
Can use a configuration file to persist the desired settings, write upon confirm.
Might want to consider using Ctk's option menu.
When scrolling, preview window skips to last object in view range
Reproduction notes:
User should not have to refer to command line to see if there is a problem or anything that requires their attention
Create a message box that closes on its own
Add new feature to filter and sort files.
tksheet and tkintertable packages are very hard to use, try out ttk.TreeView instead
Add a side column to display added filters and add feature to remove filters
Might be saved in .tif, in value range [0,65535]. Image reading squeezes it to int [0,255]. Perhaps best to squeeze everything to float [0,1].
Could add better controls to handle video playback, such as those from commonly used video players.
Screen is resized when comparison image size is larger than screen resolution. This might introduce aliasing effects in the resized image which is not desirable.
Reduce update frequency for display function if application is in the background. Reduce CPU requirements.
Some users might want it to be on, so we could add this feature into a config file to be allow them to choose
Minor bug. When app is restarted the correct color is used.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.