Giter Site home page Giter Site logo

abreheret / pixelannotationtool Goto Github PK

View Code? Open in Web Editor NEW
1.4K 45.0 301.0 24.38 MB

Annotate quickly images.

License: GNU Lesser General Public License v3.0

CMake 12.06% Batchfile 1.45% C++ 80.93% Shell 0.24% Python 3.18% C 2.13%
computer-vision deep-learning pixel-wise ground-truth annotation-tool opencv qt5 annotation pixel tool

pixelannotationtool's Introduction

PixelAnnotationTool


Linux/MAC Windows Donate
Build Status Appveyor Build Status Donate

Software that allows you to manually and quickly annotate images in directories. The method is pseudo manual because it uses the algorithm watershed marked of OpenCV. The general idea is to manually provide the marker with brushes and then to launch the algorithm. If at first pass the segmentation needs to be corrected, the user can refine the markers by drawing new ones on the erroneous areas (as shown on video below).

gif_file

Example :

Little example from an user (tenjumh) of PixelAnnotationTools : https://www.youtube.com/watch?v=tX-xcg5wY4U


Building Dependencies :

  • Qt >= 5.x
  • CMake >= 2.8.x
  • OpenCV >= 2.4.x
  • For Windows Compiler : Works under Visual Studio >= 2015

How to build go to here

Download binaries :

Go to release page

Donate :

If you like, donate !

Donating is very simple - and secure. Please click here to make a donation.

Thank you!

Your donation will help me to maintain and update PixelAnnotationTool.

License :

GNU Lesser General Public License v3.0

Permissions of this copyleft license are conditioned on making available complete source code of licensed works and modifications under the same license or the GNU GPLv3. Copyright and license notices must be preserved. Contributors provide an express grant of patent rights. However, a larger work using the licensed work through interfaces provided by the licensed work may be distributed under different terms and without source code for the larger work.

more

Citation :

  @MISC{Breheret:2017,
    author = {Amaury Br{\'e}h{\'e}ret},
    title = {{Pixel Annotation Tool}},
    howpublished = "\url{https://github.com/abreheret/PixelAnnotationTool}",
    year = {2017},
  }

pixelannotationtool's People

Contributors

abreheret avatar berendkleinhaneveld avatar daandres avatar dwlsalmeida avatar iantra avatar karimhasebou avatar progrand avatar ttyang1018 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pixelannotationtool's Issues

Error while making: ‘Qt::CheckState’ is not a class or namespace

Followed the instructions, got the following:

In file included from /home/userName/workspace/PixelAnnotationTool/src/main_window.h:22:0,
from /home/userName/workspace/PixelAnnotationTool/src/main_window.cpp:1:
/home/userName/workspace/PixelAnnotationTool/src/image_canvas.h:31:41: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
void mouseMoveEvent(QMouseEvent * event) override;
^
/home/userName/workspace/PixelAnnotationTool/src/image_canvas.h:32:42: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
void mousePressEvent(QMouseEvent * event) override;
^
/home/userName/workspace/PixelAnnotationTool/src/image_canvas.h:33:38: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
void keyPressEvent(QKeyEvent * event) override;
^
/home/userName/workspace/PixelAnnotationTool/src/image_canvas.h:34:37: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
void wheelEvent(QWheelEvent * event) override;
^
/home/userName/workspace/PixelAnnotationTool/src/image_canvas.h:35:44: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
void mouseReleaseEvent(QMouseEvent * event) override;
^
/home/userName/workspace/PixelAnnotationTool/src/image_canvas.h:36:36: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
void paintEvent(QPaintEvent *event) override;
^

In file included from /home/userName/workspace/PixelAnnotationTool/src/main_window.h:23:0,
                 from /home/userName/workspace/PixelAnnotationTool/src/main_window.cpp:1:
/home/userName/workspace/PixelAnnotationTool/src/label_widget.h:23:36: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
  void paintEvent(QPaintEvent *event) override;
                                    ^
/home/userName/workspace/PixelAnnotationTool/src/main_window.cpp: In member function ‘void MainWindow::runWatershed()’:
/home/userName/workspace/PixelAnnotationTool/src/main_window.cpp:136:45: error: ‘Qt::CheckState’ is not a class or namespace
  checkbox_watershed_mask->setCheckState(Qt::CheckState::Checked);
                                             ^
/home/userName/workspace/PixelAnnotationTool/src/main_window.cpp: In member function ‘void MainWindow::on_actionOpenDir_triggered()’:
/home/userName/workspace/PixelAnnotationTool/src/main_window.cpp:181:107: error: in C++98 ‘ext_img’ must be initialized by constructor, not by ‘{...}’
  static QStringList ext_img = { "png","jpg","bmp","pgm","jpeg" ,"jpe" ,"jp2" ,"pbm" ,"ppm" ,"tiff" ,"tif" };
                                                                                                           ^
/home/userName/workspace/PixelAnnotationTool/src/main_window.cpp:181:107: error: could not convert ‘{"png", "jpg", "bmp", "pgm", "jpeg", "jpe", "jp2", "pbm", "ppm", "tiff", "tif"}’ from ‘<brace-enclosed initializer list>’ to ‘QStringList’
CMakeFiles/PixelAnnotationTool.dir/build.make:66: recipe for target 'CMakeFiles/PixelAnnotationTool.dir/src/main_window.cpp.o' failed
make[2]: *** [CMakeFiles/PixelAnnotationTool.dir/src/main_window.cpp.o] Error 1
CMakeFiles/Makefile2:131: recipe for target 'CMakeFiles/PixelAnnotationTool.dir/all' failed
make[1]: *** [CMakeFiles/PixelAnnotationTool.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

Running on Ubuntu 16.04.

How are the labels saved?

Hello,
Thank you very much for the tool. I had a question: how are the labels of a segmented image saved in the tool? Are they saved in a JASON file or some other file format? How can I save the labels from within the tool?
Thank you.

resizing the color masks somehow messes the color detection

hi, i have labelled around 300 images for my training dataset. unfortunately since i was getting a out of memory error i had to resize all of them including the masks. but when i run a pixel color detection script the resized image detects multiple labels whereas the original ones only show a single color.
note that all my images have 1 label only, i have no idea why it is doing so.
i'll attach some images for referenece.
original images :
2653005010666-1
3021690011258-10
3021760290057-1
3021760290422-1
3021760291047-1
2600438012149-1
resized ones:
2653005010666-1
3021690011258-10
3021760290057-1
3021760290422-1
3021760291047-1
2600438012149-1

while pixel_color_detecting the original images:
Screenshot (42)

while for resized:
Screenshot (43)

support for arch/manjaro linux

> ./PixelAnnotationTool_x86_64_v1.4.0.AppImage
./PixelAnnotationTool_x86_64_v1.4.0.AppImage: symbol lookup error: /usr/lib/libfontconfig.so.1: undefined symbol: FT_Done_MM_Var

I also tried building from source in manjaro but it didn't work. a small portion of the log:

/usr/bin/ld: warning: libhdf5.so.200, needed by /usr/lib/libopencv_hdf.so.4.3.0, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libvtkInteractionStyle.so.1, needed by /usr/lib/libopencv_viz.so.4.3.0, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libvtkFiltersExtraction.so.1, needed by /usr/lib/libopencv_viz.so.4.3.0, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libvtkRenderingLOD.so.1, needed by /usr/lib/libopencv_viz.so.4.3.0, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libvtkIOPLY.so.1, needed by /usr/lib/libopencv_viz.so.4.3.0, not found (try using -rpath or -rpath-link)
...
/usr/bin/ld: /usr/lib/libopencv_viz.so.4.3.0: undefined reference to `vtkObject::SetGlobalWarningDisplay(int)'
/usr/bin/ld: /usr/lib/libopencv_viz.so.4.3.0: undefined reference to `vtkAlgorithm::UpdatePiece(int, int, int, int const*)'
/usr/bin/ld: /usr/lib/libopencv_viz.so.4.3.0: undefined reference to `vtkImageAlgorithm::CopyInputArrayAttributesToOutput(vtkInformation*, vtkInformationVector**, vtkInformationVector*)'
/usr/bin/ld: /usr/lib/libopencv_viz.so.4.3.0: undefined reference to `vtkDataSetAttributes::SetTCoords(vtkDataArray*)'
/usr/bin/ld: /usr/lib/libopencv_viz.so.4.3.0: undefined reference to `vtkSmartPointerBase::vtkSmartPointerBase(vtkObjectBase*, vtkSmartPointerBase::NoReference const&)'
...
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/PixelAnnotationTool.dir/build.make:286: PixelAnnotationTool] Error 1
make[1]: *** [CMakeFiles/Makefile2:237: CMakeFiles/PixelAnnotationTool.dir/all] Error 2
...

XML annotations for objects

Hi,

It would be a nice addition if we can also get XML annotations for the bounding box of each mask as this (the bounding boxes) is an essential requirement for training Mask-RCNN models on tensorflow or any other library.

Thanks in advance.

label sorting

First of all, appreciate for your tool.

I wonder how to sort the labels.
As below issues, I customize the label names by using a json file.
I have more than 30 labels, therefore I have to arrange them well so that I can see them intuitively.
I changed them in id order but it doesn't work.
How can I sort the labels in the order that I want?

Thanks again.

remove border around color masked images

Hi, as referenced in #7, I am also experiencing this random noise around my images while saving them, which is leading to further problems. Using version 1.3.1
I will upload the images where this noise is occuring(look them up in new tab):
Uploading both original and masked images(my main use is of color mask, just uploading all the images so it may help find the problem):
A_103:
original image:
a_103
color_mask:
a_103_color_mask
mask:
a_103_mask
watershed_mask:
a_103_watershed_mask

A_104:
original image:
a_104
color_mask:
a_104_color_mask
mask:
a_104_mask
watershed_mask:
a_104_watershed_mask

A_106:
original image:
a_106
color_mask:
a_106_color_mask
mask:
a_106_mask
watershed_mask:
a_106_watershed_mask
I can upload more images if required.

MacOS build

Hi,

is there any plan for a MacOS build?
Best,

a.

cmake error

-- The C compiler identification is GNU 7.4.0
-- The CXX compiler identification is GNU 7.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
fatal: 不是一个 git 仓库(或者任何父目录):.git
fatal: 不是一个 git 仓库(或者任何父目录):.git
fatal: 不是一个 git 仓库(或者任何父目录):.git
fatal: 不是一个 git 仓库(或者任何父目录):.git
-- update git version
CMake Error at CMakeLists.txt:27 (string):
string sub-command REGEX, mode REPLACE needs at least 6 arguments total to
command.

CMake Warning at CMakeLists.txt:44 (message):
Version number of pixel annoation tool is warned

-- Found OpenCV: /usr/local (found version "4.1.1")
-- Curl is found
-- qmake is found here : /usr/bin/qmake
-- Configuring incomplete, errors occurred!
See also "/home/lc/work/PixelAnnotationTool-1.3.0/x64/CMakeFiles/CMakeOutput.log".

Mouse right click crashes the app

On windows with custom config file loaded when i'm in the process of tagging the image. When i right click mouse over the image the app crashes and close itself without any message.

1 pixel border around the color_mask

Hi, I'm using v1.3.2 to annotate the images for a segmentation problem.

An example of my raw image:

The corresponding labeled image by this tool:

There're only two labels: foreground (white) and background (red)

Thanks to the watershed algorithm, I can do the manual labeling quickly. However, the saved result contains an unexpected border around the color_mask with 1-pixel width. If you put the color_mask on a dark background, you will notice the border:

The same problem is shown in the watershed_mask file. This somehow affects the performance of my model. I don't want the border.

Is this designed feature or just a bug? I didn't enable "keep border provide by watershed".

macOS Catalina support

hello,
The 1.4 version doesn’t seem to support macOS Catalina. (10.15.4)
The application closes immediately.
Thanks!

Issue

HI
I fine one problem is When i use your app to finish color mask on picture and saved, but open the file (GMIP software), the pixel edge has a little no match (some pixel disappear).
Is the software operation wrong?
please help.
Thanks

How to create a new mask?

Suppose I want to create another mask for fishes, ships, etc. How to create those masks?
thank you very much in advance.

warmest regards,
suryadi

Cannot produce appimages file

Dear Abreheret,

I compiled the code from github exactly the same as the instructions, and with no errors reported. However, I could not find any executable files after running the "make" command in ubuntu. There is supposed to be a ".appimages" file after the "make". Am I right?

I really appreciate your feedback on this issue. Thank you for your time.

Best,
Linlin

Please provide AppImage for download on GitHub Releases

linuxdeployqt can do AppImage natively.

Providing an AppImage would have, among others, these advantages:

  • Applications packaged as an AppImage can run on many distributions (including Ubuntu, Fedora, openSUSE, CentOS, elementaryOS, Linux Mint, and others)
  • One app = one file = super simple for users: just download one AppImage file, make it executable, and run
  • No unpacking or installation necessary
  • No root needed
  • No system libraries changed
  • Works out of the box, no installation of runtimes needed
  • Optional desktop integration with appimaged
  • Optional binary delta updates, e.g., for continuous builds (only download the binary diff) using AppImageUpdate
  • Can optionally GPG2-sign your AppImages (inside the file)
  • Works on Live ISOs
  • Can use the same AppImages when dual-booting multiple distributions
  • Can be listed in the AppImageHub central directory of available AppImages
  • Can double as a self-extracting compressed archive with the --appimage-extract parameter

Here is an overview of projects that are already distributing upstream-provided, official AppImages.

If you have questions, AppImage developers are on #AppImage on irc.freenode.net.

Completely black in "color_mask"

Hello, I tried v1.3.1 (downloaded the binary file) in Windows 10, and really liked it - thank you! But I found an issue with "xxx_color_mask" file. It is completely black.

I only set 'Manual Mask' option but no 'Watershed Mask' option, mask with one of the colors manually, and 'Save current image'. I used "road1.jpg" in the images_test folder to test. The created "road1_color_mask.png" is completely dark, while "road1_mask.png" is a grey image showing the correct mask location. Please advise how I can get a color mask image. My goal is to mask small areas with 2-3 classes, so watershed mask is not necessarily needed.

road1_color_mask
road1_mask

Background Label

I'd like to change an existing mask containing three labels. Two labels are clearly defined, the third is background (id 0) and includes every other undefined object. Now, I have the problem that the watershed algorithm completely removes the background and label its content with another color. Are you concerned about this issue? Is there a way to better specify the background label, e.g. with different configurations in the JSON file?

About Build

Hello,
I am using Ubuntu 16.04 .

Below is in your script to build,

On ubuntu, PixelAnnotationTool need this pacakage (OpenCV and Qt5.9.1):
Step 1:
sudo apt-get install mesa-common-dev sudo apt-get install libopencv-dev python-opencv wget http://download.qt.io/official_releases/qt/5.9/5.9.1/qt-opensource-linux-x64-5.9.1.run chmod +x qt-opensource-linux-x64-5.9.1.run ./qt-opensource-linux-x64-5.9.1.run

To compile the application :
Step 2:
cd .. mkdir x64 cd x64 cmake -DQT5_DIR=/path/to/Qt5.9.1/5.9.1/gcc_64/lib/cmake -G "Unix Makefiles" .. make

But when I do
cmake -DQT5_DIR=/path/to/Qt5.9.1/5.9.1/gcc_64/lib/cmake -G "Unix Makefiles" ..
I encounter some error.

Now, I finished Step1 and downloaded PixelAnnotationTool_x86_64_v1.3.1.AppImage and
PixelAnnotationTool_x64_v1.3.1.zip and do
chmod +x PixelAnnotationTool_x86_64_v1.3.1.AppImage
, but i am not sure it was right.

So , I want to know what are the necessary things i need to install before using PixelAnnotationTool.

Thanks!

color_mask not created: change color description

Hello, I enjoy this app (v 1.2.0 binary downloaded) with my Ubuntu16.04. I have two issues.

First, I only set 'Manual Mask' option but no 'Watershed Mask' option, mask with one of the colors manually, and 'Save current image'. Then, the created xx_color_mask.png is completely dark, while _mask.png shows the mask (based on a jpg RGB image). Please advise how I can get a color mask image. My goal is to mask small areas with 2-3 classes, so watershed mask is not necessarily needed.

The second issue is whether I can change the color labeling description (e.g., red for 'rider', white for 'road marking'), because I am using this for non-driving images, such that custom color description would be more clear for me to label.

Edit: I notice that no area should be unmasked. If so, other areas should be masked as 'neutral'. How do I mask the rest of the area to neutrally mask?

Getting error when trying to run PixelAnnotationTool

I downloaded PixelAnnotationTool and when I tried to run the app, I got an error:
./PixelAnnotationTool_x86_64_v1.4.0.AppImage: symbol lookup error: /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0: undefined symbol: hb_font_funcs_set_variation_glyph_func

I work on Ubuntu 18.04.3

Suggestion: add manual mark to color mask

Great tool and congrats!

I think that it would be quite useful to add an option to allow the user to add manual mask to the final color mask png. Currently user mark is saved in a seperate png file.

For example, if I want to mark all balloons in the following picture, I would use red color for each balloon, and apply watershed (image taken from matterport mask-rcnn balloon example):
image

It works great. But then I want to "seperate" each balloon from one another. In this case, I might want to draw a thin border using a different color without applying the watershed, and I want this border to be visualizable in the final color png. Currently it is not possible since the color png is a result of the watershed. I think that it could be very useful to mark objects of the same type while overlapping with each other.

Many thanks.

Tom

close after load image

App is closing after I click on the imagem in the right bar. Tested it with an image without mask and with an image with previous saved mask.

crashed on image with Chinese file name or folder name

PixelAnnotationTool crashed while opening the image which had Chinese character in file name or folder name.
OS: Windows 7 SP1
PixelAnnotationTool version: v1.3.2

Problem detail:
Problem signature:
Problem Event Name: APPCRASH
Application Name: PixelAnnotationTool.exe
Application Version: 0.0.0.0
Application Timestamp: 5c669d98
Fault Module Name: ucrtbase.DLL
Fault Module Version: 10.0.14393.2247
Fault Module Timestamp: 5adc1d0b
Exception Code: 40000015
Exception Offset: 000000000006eacf
OS Version: 6.1.7601.2.1.0.256.1
Locale ID: 1033
Additional Information 1: 234e
Additional Information 2: 234e57764cdda6dba0ee3839b79c0dce
Additional Information 3: 1ebd
Additional Information 4: 1ebda18eff30a35f06f16bc4164af8f7

Read our privacy statement online:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409

If the online privacy statement is not available, please read our privacy statement offline:
C:\Windows\system32\en-US\erofflps.txt

Params needs to be reset after opening each file

Defining the alpha mask, resize factor and circle size params is not persistent after opening another file

Expected behavior:

Set the params once and have them applied by default when opening a new file

Code does not compile

The code below gets the following error:
error: base operand of ‘->’ has non-pointer type ‘QJsonObject::iterator’

void Name2Labels::read(const QJsonObject &json) {
	QJsonObject array = json["labels"].toObject();

	for (QJsonObject::iterator it = array.begin(); it != array.end(); it++) {
		QJsonObject object = it->toObject();
		LabelInfo label;
		label.read(object);
		(*this)[label.name] = label;
	}
}

Custom labels

Hi, how to create annotation with custom labels like A, B, C, D, E instead of the pre defined ones. Any help would be appreciated.

a requirement

Hi, I test the app , it is very good.

when I use it, I find some questions:

  1. select label sometimes error
  2. GrabCut can be imported in
  3. merge the watershed label and mask and let the mask fine (manually must give scratch all mask area )

MacOS crash when clicking on any label on the left menu

Here is the resulting crash report

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0                                 	0x00000001040866b5 ImageCanvas::setId(int) + 37
1                                 	0x0000000104074e2d MainWindow::changeLabel(QListWidgetItem*, QListWidgetItem*) + 525
2   org.qt-project.QtCore         	0x0000000105a7319e QMetaObject::activate(QObject*, int, int, void**) + 2334
3   org.qt-project.QtWidgets      	0x000000010436c81d 0x1040a4000 + 2918429
4   org.qt-project.QtCore         	0x0000000105a7319e QMetaObject::activate(QObject*, int, int, void**) + 2334
5   org.qt-project.QtCore         	0x0000000105a0a8cc QItemSelectionModel::setCurrentIndex(QModelIndex const&, QFlags<QItemSelectionModel::SelectionFlag>) + 252
6   org.qt-project.QtWidgets      	0x0000000104323a36 QAbstractItemView::mousePressEvent(QMouseEvent*) + 1110
7   org.qt-project.QtWidgets      	0x00000001040ee4ab QWidget::event(QEvent*) + 427
8   org.qt-project.QtWidgets      	0x00000001041985bd QFrame::event(QEvent*) + 45
9   org.qt-project.QtWidgets      	0x00000001043234d2 QAbstractItemView::viewportEvent(QEvent*) + 1442
10  org.qt-project.QtCore         	0x0000000105a42214 QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) + 148
11  org.qt-project.QtWidgets      	0x00000001040b4458 QApplicationPrivate::notify_helper(QObject*, QEvent*) + 248
12  org.qt-project.QtWidgets      	0x00000001040b73e0 QApplication::notify(QObject*, QEvent*) + 7568
13  org.qt-project.QtCore         	0x0000000105a41f64 QCoreApplication::notifyInternal2(QObject*, QEvent*) + 164
14  org.qt-project.QtWidgets      	0x00000001040b4dd0 QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) + 928
15  org.qt-project.QtWidgets      	0x000000010410e693 0x1040a4000 + 435859
16  org.qt-project.QtWidgets      	0x000000010410d355 0x1040a4000 + 430933
17  org.qt-project.QtWidgets      	0x00000001040b446d QApplicationPrivate::notify_helper(QObject*, QEvent*) + 269
18  org.qt-project.QtWidgets      	0x00000001040b5897 QApplication::notify(QObject*, QEvent*) + 583
19  org.qt-project.QtCore         	0x0000000105a41f64 QCoreApplication::notifyInternal2(QObject*, QEvent*) + 164
20  org.qt-project.QtGui          	0x000000010535ab92 QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) + 3714
21  org.qt-project.QtGui          	0x000000010534213b QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 219
22  libqcocoa.dylib               	0x0000000111257ec0 0x11122c000 + 179904
23  libqcocoa.dylib               	0x0000000111258770 0x11122c000 + 182128
24  com.apple.CoreFoundation      	0x00007fff57dafa11 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
25  com.apple.CoreFoundation      	0x00007fff57e6942c __CFRunLoopDoSource0 + 108
26  com.apple.CoreFoundation      	0x00007fff57d92470 __CFRunLoopDoSources0 + 208
27  com.apple.CoreFoundation      	0x00007fff57d918ed __CFRunLoopRun + 1293
28  com.apple.CoreFoundation      	0x00007fff57d91153 CFRunLoopRunSpecific + 483
29  com.apple.HIToolbox           	0x00007fff5707bd96 RunCurrentEventLoopInMode + 286
30  com.apple.HIToolbox           	0x00007fff5707ba0f ReceiveNextEventCommon + 366
31  com.apple.HIToolbox           	0x00007fff5707b884 _BlockUntilNextEventMatchingListInModeWithFilter + 64
32  com.apple.AppKit              	0x00007fff5532ca73 _DPSNextEvent + 2085
33  com.apple.AppKit              	0x00007fff55ac2e34 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 3044
34  com.apple.AppKit              	0x00007fff55321885 -[NSApplication run] + 764
35  libqcocoa.dylib               	0x00000001112575bf 0x11122c000 + 177599
36  org.qt-project.QtCore         	0x0000000105a3d3de QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 430
37  org.qt-project.QtCore         	0x0000000105a42552 QCoreApplication::exec() + 130
38                                	0x00000001040874e8 main + 72
39  libdyld.dylib                 	0x00007fff7fbd2015 start + 1

Thread 1:
0   libsystem_kernel.dylib        	0x00007fff7fd2328a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff7feea009 _pthread_wqthread + 1035
2   libsystem_pthread.dylib       	0x00007fff7fee9be9 start_wqthread + 13

Thread 2:
0   libsystem_kernel.dylib        	0x00007fff7fd2328a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff7feea20e _pthread_wqthread + 1552
2   libsystem_pthread.dylib       	0x00007fff7fee9be9 start_wqthread + 13

Thread 3:
0   libsystem_kernel.dylib        	0x00007fff7fd2328a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff7feea20e _pthread_wqthread + 1552
2   libsystem_pthread.dylib       	0x00007fff7fee9be9 start_wqthread + 13

Thread 4:
0   libsystem_kernel.dylib        	0x00007fff7fd2328a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff7feea009 _pthread_wqthread + 1035
2   libsystem_pthread.dylib       	0x00007fff7fee9be9 start_wqthread + 13

Thread 5:
0   libsystem_kernel.dylib        	0x00007fff7fd2328a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff7feea009 _pthread_wqthread + 1035
2   libsystem_pthread.dylib       	0x00007fff7fee9be9 start_wqthread + 13

Thread 6:: com.apple.NSEventThread
0   libsystem_kernel.dylib        	0x00007fff7fd1920a mach_msg_trap + 10
1   libsystem_kernel.dylib        	0x00007fff7fd18724 mach_msg + 60
2   com.apple.CoreFoundation      	0x00007fff57d92785 __CFRunLoopServiceMachPort + 341
3   com.apple.CoreFoundation      	0x00007fff57d91ad7 __CFRunLoopRun + 1783
4   com.apple.CoreFoundation      	0x00007fff57d91153 CFRunLoopRunSpecific + 483
5   com.apple.AppKit              	0x00007fff55469fc4 _NSEventThread + 184
6   libsystem_pthread.dylib       	0x00007fff7feea661 _pthread_body + 340
7   libsystem_pthread.dylib       	0x00007fff7feea50d _pthread_start + 377
8   libsystem_pthread.dylib       	0x00007fff7fee9bf9 thread_start + 13

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x0000000000000001  rbx: 0x0000000000000000  rcx: 0x000000000000000b  rdx: 0x0000000000000b0b
  rdi: 0x0000000000000b0b  rsi: 0x0000000000000b0b  rbp: 0x00007ffeebb99250  rsp: 0x00007ffeebb99230
   r8: 0x00000000000000ff   r9: 0x0000000000000008  r10: 0x0000000000000072  r11: 0x0000600000447b18
  r12: 0x000060000044a320  r13: 0x0000604000646f00  r14: 0x00007ffeebb9bae8  r15: 0x00007ffeebb9b950
  rip: 0x00000001040866b5  rfl: 0x0000000000010202  cr2: 0x0000000000000120
  

Eraser feature

I was interested in whether there was a workaround to erase some annotated pixel's masks during labeling. This would be useful in case something was labeled by mistake. Is there a way to currently do this (other than undo)?
If not, where would be a good place in the code for me to start implementing this on a fork?

Segmentation Algorithm

How can I add another algorithm, something else than watershed, to the application? Does anyone already have an example implementing it?

Unable to save masks

Hi, I was trying to run the tool with custom labels. I am unable to save masks that I draw. Watershed mask is being saved but not exactly the ones I draw.
_color_mask.png file is completely blank.

Any help will be highly appreciated.

Feature request: Auto save for images

Auto save will be very helpful for fast annotations.
Also, maybe not keep a cap on the circular brush? I am annotating very high size images (about 4k) and the brush feels small even at its maximum size.

Cmake error

I am using Ubuntu 16.04 .

I have performed all the steps mentioned in README and installed all the dependencis. However when I run this step
cmake -DQT5_DIR=/home/niraj/Qt5.9.1/5.9.1/gcc_64/lib/cmake -G "Unix Makefiles" .. I encounter this error

CMake Error: The source directory "/home/niraj" does not appear to contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.

I don't know where I am going wrong./home/niraj is the path where my Qt5.9.1 resides

Save mask does not respond

I am loading a directory containing only .jpg images.
Some them are normally saved, but some others just do not respond when clicking 'Save current image' nor pressing 'Ctrl+S'. I have checked it happens always on the same images. I do not see any particular common pattern among them that could give me a hint of what is going on.
I wonder if you have any idea of what could possibly be the reason.

Thanks.

How to set the right labels in mask

Great work and thanks for your tool.

I wonder how the provided labels can be modified to use the masks IDs I desire.

For example, I have a "pencil" instance and a "background" instance in the image I want to get masked. If I color the pencil in the image with a "traffic sign" predefined label and leave the rest without coloring I will have in my output manual the uncolored background with pixel value 0 and the pencil instance with pixel value 19 (which is the traffic sign ID). As I only have one label ("pencil" label), I would like to use the ID number 1 to color the pencil instance. The problem is that if I select the label with ID=1, which belongs to "ego-vehicle", I cannot color anything. I guess this is due to the fact that the "ego-vehicle" is supposed to be discarded and assumed as background. Therefore, how can I get to use the ID I want to mask an image that is not supposed to stick to the predefined labels you provide?

I hope I explained myself accurately.
Thanks again.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.