muddy-28 / cvblob Goto Github PK
View Code? Open in Web Editor NEWAutomatically exported from code.google.com/p/cvblob
License: GNU Lesser General Public License v3.0
Automatically exported from code.google.com/p/cvblob
License: GNU Lesser General Public License v3.0
README for 0.10.4 cvBlob. 1. DOWNLOAD LATEST SOURCE You need Subversion ( http://subversion.tigris.org ). Read only checkout: svn checkout http://cvblob.googlecode.com/svn/trunk/ cvblob-read-only 2. DEPENDENCIES In order to compile cvBlob you need the following: * CMAKE ( http://www.cmake.org ) * OpenCV ( http://opencvlibrary.sourceforge.net ) 2.1 Instalation of dependencies in Debian type SO (Ubuntu,...) using apt: If you are in a Debian style distribution (Ubuntu, for example) you can do something like this: sudo aptitude install cmake libcv4 libcv-dev libcvaux4 2.2 Instalation of dependencies in SuSE using Yast Type this: su -c "yast -i libopencv1 opencv opencv-debuginfo opencv-debugsource opencv-devel opencv-python cmake cmake-gui" 3. COMPILING AND INSTALLING In Linux, if you have unpacked the source in $CVBLOB, enter in a console: cd $CVBLOB cmake . make sudo make install In Windows it must be as easy as in Linux (changing "make" for the equivalent in your compiler). If problems, please read: http://www.cmake.org/HTML/RunningCMake.html 3.1 OpenCV path You can tell CMake where OpenCV is installed, in case it can't find it, using the "OpenCV_DIR" variable: cmake . -DOpenCV_DIR=<path_to_OpenCV> 3.2 Installation path To change the destination path for the installation, set "CMAKE_INSTALL_PREFIX" variable: cmake . -DCMAKE_INSTALL_PREFIX=<installation_path> 3.3 Problems Latest information about compiling: http://code.google.com/p/cvblob/wiki/HowToCompile 4. INFORMATION The official home page of cvBlob is: http://cvblob.googlecode.com Downloads: http://code.google.com/p/cvblob/downloads/list Documentation: http://code.google.com/p/cvblob/wiki/WikiIndex?tm=6 Bug reports: http://code.google.com/p/cvblob/issues/list 5. MAIN AUTHOR Comments, suggestions and, why not, donations (PayPal) to: Cristóbal Carnero Liñán E-mail: [email protected] 6. CONTRIBUTORS Stefan Gachter Web page: http://gachter.name Kouichi Nishino
Hello grendel, this is a very useful library!
Now I am developing a .NET wrapper of OpenCV.
(http://code.google.com/p/opencvsharp/)
I think I'd like to wrap your library and embed in my project.
Please get back to me, if you give me a permission.
I'm sorry for my poor English.
Best regards
Schima
Original issue reported on code.google.com by [email protected]
on 2 Apr 2009 at 6:46
What steps will reproduce the problem?
1. Call cvLabel and produce a label image
2. Try to iterate through that image's data by adding widthStep to the data
pointer for every row traversed, and retrieve values
What is the expected output? What do you see instead?
I run into a memory problem when the row number is 1/4 of the total number of
rows in the image. I took a closer look at the data and from what I can tell
from the values I retrieve, widthStep seems to be 4x what it should be. When I
divide it by 4 during the traversal, everything works out great. Something to
do with storing a 1-byte uchar in what OpenCV expects to be an 4-byte unsigned
integer space, maybe?
What version of the product are you using? On what operating system?
OpenCV 2.4.1
Windows 7 x64
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 25 Jul 2013 at 1:34
The function pointer's return value was mistyped, and also initializing the
address in the header was causing a warning about cvGreaterBlob being defined
more than once (even with the include guards). An inline function should work
pretty well.
Original issue reported on code.google.com by [email protected]
on 16 Jan 2012 at 6:32
Attachments:
What steps will reproduce the problem?
1. cvb::CvBlobs blobs;
2. cvb::cvLabel(grey, labelImg, blobs);
Error: in cvReleaseBlobs (EXC_BAD_ACCESS)
Tested on:
OS X 10.7.5
Xcode 4.5.2
LLVM 4.1
with LLVM GCC 4.2 works fine
Original issue reported on code.google.com by [email protected]
on 19 Jan 2013 at 3:38
What steps will reproduce the problem?
1. Create a new cvb (opencv) project.
2. Do not include the cvb namespace in it.
3. Add the following line :
IplImage* labelImg = cvCreateImage(cvGetSize(img), IPL_DEPTH_LABEL, 1);
4. Will not compile :
error C2065: 'CvLabel' : undeclared identifier
What version of the product are you using? On what operating system?
Revision 272 from SVN. Compiler VS2010, Windows 7.
Please provide any additional information below.
In cvblob.h, changing the line :
#define IPL_DEPTH_LABEL (sizeof(CvLabel)*8)
to :
#define IPL_DEPTH_LABEL (sizeof(cvb::CvLabel)*8)
should fix the problem.
Original issue reported on code.google.com by [email protected]
on 21 Nov 2010 at 3:21
What steps will reproduce the problem?
1. result = cvLabel(chB, labelImg, blobs);
2. cvRenderBlobs(labelImg, blobs, frame, frame);
3. cvUpdateTracks(blobs, tracks,5., 50);
4. cvRenderTracks(tracks, frame, frame,
CV_TRACK_RENDER_ID|CV_TRACK_RENDER_BOUNDING_BOX);
What is the expected output? What do you see instead?
Access Violation in cvtrack.cpp at line 292 :
track->label = blob->label;
What version of the product are you using? On what operating system?
Version 10.1 used with CodeGear Borland C++ 2009 on Windows XP
Please provide any additional information below.
cvblob is used to follow about 100 particles. Version 0.9.15 works
perfectly, while version 0.10.1 get access violation after a 40 frames
analysed.
Original issue reported on code.google.com by [email protected]
on 3 Jun 2010 at 8:55
I think it would be nice to have an Ubuntu (.deb) package.
I'm going to package it during the next time for Ubuntu 12.04.
Original issue reported on code.google.com by [email protected]
on 31 Aug 2012 at 12:07
Hi,
I am using cvblob on an ARM processor, and I discovered a bug in the code. It
seems ARM uses an unsigned char by default, while x86 uses signed char.
This leads to an infinite loop in the contour-finding loop in cvLabel.
Specifically, in cvlabel.cpp, on lines 34 and 40, I changed
const char movesE ...
const char movesI ...
to
const signed char movesE ...
const signed char movesI ...
And now it seems to work. However, I haven't yet checked the rest of the code
for problems. Perhaps a solution would be to change the Makefile to compile
with '-fsigned-char'.
Original issue reported on code.google.com by [email protected]
on 24 Jun 2011 at 3:11
Hi,
nice work with the cvBlob library.
However, while i was working on a project i discovered a bug in your code.
The function cvRebderBlob misses the last row and column of the blob's ROI.
The lines 181 and 182 in the cvblob.cpp contain a for loop whose for loop
condition should be changed to include also the indexes blob->maxx and
blob->maxy, so:
for (unsigned int r=blob->miny; r<=blob->maxy; r++, labels+=stepLbl,
source+=stepSrc, imgData+=stepDst)
for (unsigned int c=blob->minx; c<=blob->maxx; c++)
i've included a minimal example code to test the difference.
The example creates 10 by 10 pixel image and includes a square of 4 pixels .
After that the cvLabel finds the blobs and they are rendered to an empty 10 by
10 image. In addition all the pixel values are printed to std.
As you can see, 3 out of 4 pixels are missing in the rendered image.
With the '=' added to the for loops, the maxy and maxx are also included and
the rendered image matches the input image.
Jaka
Original issue reported on code.google.com by [email protected]
on 14 Feb 2013 at 9:35
Attachments:
What steps will reproduce the problem?
1. Create blobs:
cvb::CvBlobs blobs;
cvb::CvTracks tracks;
unsigned int result = cvLabel(&img, labelImg, blobs);
...
2. Delete blobs:
cvb::cvReleaseBlobs(blobs);
Error:
#0 0x404b10 std::_List_base<unsigned char, std::allocator<unsigned char>
>::_M_clear(this=0x49)
(/usr/lib/gcc/x86_64-unknown-linux-gnu/4.7.0/../../../../include/c++/4.7.0/bits/
list.tcc:70)
#1 0x4045b4 std::_List_base<unsigned char, std::allocator<unsigned char>
>::~_List_base(this=0x49, __in_chrg=<optimized out>)
(/usr/lib/gcc/x86_64-unknown-linux-gnu/4.7.0/../../../../include/c++/4.7.0/bits/
stl_list.h:401)
#2 0x404278 std::list<unsigned char, std::allocator<unsigned char>
>::~list(this=0x49, __in_chrg=<optimized out>)
(/usr/lib/gcc/x86_64-unknown-linux-gnu/4.7.0/../../../../include/c++/4.7.0/bits/
stl_list.h:458)
#3 0x404296 cvb::CvContourChainCode::~CvContourChainCode(this=0x41,
__in_chrg=<optimized out>) (/usr/include/cvblob.h:111)
#4 0x40433f cvb::cvReleaseBlob(blob=0x6232f0) (/usr/include/cvblob.h:312)
#5 0x4043e8 cvb::cvReleaseBlobs(blobs=std::map with 56 elements)
(/usr/include/cvblob.h:328)
#6 0x403bc8 BlobDetect(frameGray=..., inFrame=...)
(/home/revx/projects/SoccerCMK/balldetector.cpp:56)
#7 0x403cf4 BallDetector::detectBall(this=0x613800, frame=...)
(/home/revx/projects/SoccerCMK/balldetector.cpp:66)
#8 0x40917f main(argc=1, argv=0x7fffffffe7b8)
(/home/revx/projects/SoccerCMK/main.cpp:230)
tested on ArchLinux x64. Kernel 3.3.7
GCC 4.7.0
Original issue reported on code.google.com by [email protected]
on 29 May 2012 at 1:38
Hi Grendel
I need to get the contour of a blob (easy task)
but I need the contour pixels in some order (e.g. clockwise)
since I need to connect them by a line in another application.
I was wondering, if, by chance, you have a piece of code availble
for this purpose.
Thanks a lot again
Best regards
Dan
Original issue reported on code.google.com by [email protected]
on 11 Feb 2009 at 4:00
Hi Grendel,
just a question.
I am using repeatedly the following functions
cvLabel/cvFilter/cvGreaterBlob
Is it possible that one of them dinamically allocate some structure and do
not free them?
When I commented above piece of code, I finally found the application
memory stable and it didnt increased.
Can you please have a look? It is very important for me.
Thanks a lot!
Original issue reported on code.google.com by [email protected]
on 11 Mar 2009 at 4:49
What steps will reproduce the problem?
1. Trying to stick to the rules of OpenCV 2.1 and using cv::Mat instead of
IplImage.
2. Feeding cvLabel() with a cv::Mat doesn't work, converting the mat to and
IplImage also doesn't work because of the const parameter needed.
What is the expected output? What do you see instead?
I think it should either work with cv::Mat or IplImage without a need for the
cast!?
What version of the product are you using? On what operating system?
OpenCV 2.1 on OSX, latest cvBlob release.
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 22 Nov 2010 at 5:58
Hi,
I'm having difficulty of installation/ compilation of cvBlob into OpenCV
Microsoft Visual Studio 2010 in WINDOW. I understood that there is a
installation guide work on linux but I couldn't find how it can be done in
Window.
I would appreciate if someone may provide me the installation guide in WINDOW
as I found that cvBlob is very useful for my project.Thanks
Original issue reported on code.google.com by [email protected]
on 2 Jun 2011 at 3:38
Compile please for Windows XP VS2008
Original issue reported on code.google.com by [email protected]
on 22 Nov 2011 at 6:22
I tried to compile cvBlob and it gave me error
In function ‘void cvb::cvWriteContourPolygonSVG(const
cvb::CvContourPolygon&, const std::string&, const CvScalar&, const
CvScalar&)’:
/Development/cvblob/cvBlob/cvcontour.cpp:417: error: variable
‘std::stringstream buffer’ has initializer but incomplete type
make[2]: *** [lib/CMakeFiles/cvblob.dir/cvcontour.o] Error 1
make[1]: *** [lib/CMakeFiles/cvblob.dir/all] Error 2
make: *** [all] Error 2
I added '# include <sstream>' in file cvcontour.cpp located in cvBlob
directory and it just compiled well.
Just wanted to let you know of the error and the solution.
Thanks.
Original issue reported on code.google.com by [email protected]
on 25 Feb 2010 at 1:08
I want to detect the boundary of an object in a binary image.
A similar function is available in Matlab's image processing toolkit.
has anyone done it yet or knows anything about it.
Original issue reported on code.google.com by [email protected]
on 27 Oct 2011 at 6:21
Hello. First of all I want to thank you for sharing your code. It is very
useful and works very well.
However I found some memory leaks using CvUpdateTracks and cvRenderTracks
functions. I find them out when running Valgrind memory checker.
* What steps will reproduce the problem?
Use this code in a loop and memory will start growing after some time (must
be more than 10 minutes to notice that increase):
CvSize imSize = cvSize(640, 480);
IplImage* binaryImage = cvCreateImage(imSize, IPL_DEPTH_8U, 1);
IplImage* labelImg = cvCreateImage(imSize, IPL_DEPTH_LABEL, 1);
.
.
.
while(1)
{
//Read from a camera or video source and save binarized image in
binaryImage variable
.
.
.
CvBlobs blobs;
CvTracks tracks;
cvLabel(binaryImage, labelImg, blobs);
cvUpdateTracks(blobs, tracks, 5., 10); //Do the tracking
cvRenderTracks(tracks, binaryImage, binaryImage, CV_TRACK_RENDER_ID
| CV_TRACK_RENDER_TO_LOG);
cvReleaseBlobs(blobs);
}
* What version of the product are you using? On what operating system?
I'm using Ubuntu 8.04 64 bits, developing under Eclipse Galileo. What I use
to check the memory leaks is Valgrind (http://valgrind.org/)
* Please provide any additional information below.
Valgrind output message shows something like this after every execution:
==1314== 2,576 bytes in 46 blocks are definitely lost in loss record 84 of 139
==1314== at 0x4C23809: operator new(unsigned long) (vg_replace_malloc.c:230)
==1314== by 0x5DA8D5: cvRenderTracks (in
/home/jorge/Eclipse_Projects/VIVAC_Server/Debug/VIVAC_Server)
==1314== by 0x42014B: CaballeroDetector(_IplImage*, MotionDetectionOut*)
(Caballero.cpp:603)
==1314== by 0x4095C0: motionDetection(MotionDetParam const*, ImageOut
const*, MotionDetectionOut*) (KernelFunctions.cpp:218)
==1314== by 0x40E293: main (VIVAC_Server.cpp:412)
==1314== 18,048 bytes in 376 blocks are definitely lost in loss record 87
of 139
==1314== at 0x4C23809: operator new(unsigned long) (vg_replace_malloc.c:230)
==1314== by 0x5DB624: cvUpdateTracks (in
/home/jorge/Eclipse_Projects/VIVAC_Server/Debug/VIVAC_Server)
==1314== by 0x4200F7: CaballeroDetector(_IplImage*, MotionDetectionOut*)
(Caballero.cpp:600)
==1314== by 0x4095C0: motionDetection(MotionDetParam const*, ImageOut
const*, MotionDetectionOut*) (KernelFunctions.cpp:218)
==1314== by 0x40E293: main (VIVAC_Server.cpp:412)
Thank you very much.
Tarki.
Original issue reported on code.google.com by [email protected]
on 26 Nov 2009 at 9:34
When I'm using cvLabel on my image I'm getting 100 blobs.
Most of the blobs are too small so I'm using cvFilterByArea to get the real 20
blobs.
It works well but then the blob label is not the same as the blob index in the
blobs vector.
I need to calculate some kind of distance matrix between the blobs and order
them in a dendrogram but the fact that the label is different from the index in
the vector makes it complicated. To solve it I need to save a map of
label->index and check it every time.
I thought of several way to solve it:
1. Have a new function cvRelabel(blobs, label) which makes sure the blob label
is the same as its index.
2. Two optional argument to cvLabel, minArea and maxArea to filter blobs when
finding them.
3. cvFilterByArea could take the label as an argument and change the labels of
the blobs and in the img after removing the not needed blobs.
Makes sense to add one of the options to cvBlob?
Thanks
Original issue reported on code.google.com by [email protected]
on 12 Jan 2011 at 10:43
What steps will reproduce the problem?
1. install Opencv-2.3.1a from http://sourceforge.net/projects/opencvlibrary/
change ffmpeg version 0.8.5, install cvblob from
http://cvblob.googlecode.com/svn/branches/0.10.4_pythonswig (compile /example
and run ok)
2. compile _cvblob.so OK but when i run test.py :
What is the expected output? What do you see instead?
cvblob-read-only/interfaces/swig/python$ python test.py
Traceback (most recent call last):
File "test.py", line 43, in <module>
result = cvb.cvLabel(grey,labelImg,blobs)
File "/home/biogene/projet/cvbloub/cvblob-read-only/interfaces/swig/python/cvblob.py", line 246, in cvLabel
return _cvblob.cvLabel(*args)
TypeError: %%typemap: could not convert input argument to an IplImage
What version of the product are you using? On what operating system?
ubuntu version 11.10 (oneiric) / Linux biogene 3.0.0-12-generic-pae #20-Ubuntu SMP Fri Oct 7 16:37:17 UTC 2011 i686 i686 i386 GNU/Linux
Please provide any additional information below.
i arleady had cvblob in last version of ubuntu 11.04 and this error didn't
exist yet... surely du to new opencv version ???? or i missed a library during
installation
Original issue reported on code.google.com by [email protected]
on 31 Oct 2011 at 1:27
In the cvRenderBlob r iterates over rows and c iterates over columns.
On each step you calculate three pointers but instead you can advance the
pointer and access the matrix elements in less overhead.
an example:
float s = 0.0f;
for(int row=0; row<mat->rows; row++ ) {
const float* ptr = (const float*)(mat->data.ptr + row * mat->step);
for( col=0; col<mat->cols; col++ ) {
s += *ptr++;
}
}
return( s );
}
instead of something like:
for (unsigned int r=blob->miny; r<blob->maxy; r++, labels+=stepLbl,
source+=stepSrc, imgData+=stepDst)
{
for (unsigned int c=blob->minx; c<blob->maxx; c++)
{
if (labels[c]==blob->label)
{
imgData[imgDest->nChannels*c+0] = (unsigned char)((1.-alpha)*source[imgSource->nChannels*c+0]+alpha*color.val[0]);
imgData[imgDest->nChannels*c+1] = (unsigned char)((1.-alpha)*source[imgSource->nChannels*c+1]+alpha*color.val[1]);
imgData[imgDest->nChannels*c+2] = (unsigned char)((1.-alpha)*source[imgSource->nChannels*c+2]+alpha*color.val[2]);
}
}
}
Original issue reported on code.google.com by [email protected]
on 17 Nov 2010 at 10:56
What steps will reproduce the problem?
1. use test solution
2. with an image from camera
3. error
version 0.9.14
Original issue reported on code.google.com by tarakerat
on 24 Mar 2010 at 5:37
Hello and thank you for a very nice library!
I would love to ask you if it is possible, and how I should copy contour of a
blob into a standard OpenCv (vector of points) contour?
Thank you!
Jakub
Original issue reported on code.google.com by [email protected]
on 3 May 2014 at 9:39
What steps will reproduce the problem?
1. First i declare the maxBlob: CBlob * maxBlob;
2. Display the blob by using maxBlob->Fillblob(destination,
CV_RGB(255,255,255));
3. The code is:
//load binary image
IplImage * inputImage = cvLoadImage("fill.jpg");
CBlobResult blobs;
blobs = CBlobResult( inputImage, NULL, 0 );
// number of blobs
int n = blobs.GetNumBlobs();
cout<<"number of blobs: "<<n<<endl;
CBlob *currentBlob;
CBlob *maxBlob;
double max=0.0,currentBlobArea=0.0;
IplImage * imgBlob=cvCreateImage(cvGetSize(inputImage),8,1);
for (int i=0; i<n; i++ )
{
currentBlob = blobs.GetBlob(i);
//if currentBlob area is largest, fill the imgBlob;
currentBlobArea = currentBlob->Area();
if(currentBlobArea>max){
max = currentBlobArea;
maxBlob = currentBlob;
}
}
cout<<"largest area is: "<<max<<endl;
maxBlob->FillBlob(imgBlob, CV_RGB(255,255,255));
What is the expected output? What do you see instead?
I expected to see the largest blob with a black background. But what i get is a
totally grey output.
What version of the product are you using? On what operating system?
I am using OpenCV 2.1. Cvblob i downloaded from wiki. I am using window7
Please provide any additional information below.
I follow the instruction in the wiki to install the lib. I can detect the
number of blobs in the image, and can identify their area. But when i want to
print the largest blob, the image is, don't know whey stretched, or totally
grey image is come out.
Please help me. Tq.
Original issue reported on code.google.com by [email protected]
on 1 Sep 2011 at 9:00
[deleted issue]
Any chance of this library being updated to use Mat and the newer versions of
functions in opencv2.0+?
Original issue reported on code.google.com by [email protected]
on 2 Mar 2011 at 11:20
Is there a way to know the height and width of the blob?
Original issue reported on code.google.com by [email protected]
on 9 Sep 2012 at 11:35
What steps will reproduce the problem?
1. Run Cmake from cvblob folder for the first time.
2. CMake will ask for several opencv libs and include directories.
What is the expected output? What do you see instead?
CMake should find OpenCV by itself.
What version of the product are you using? On what operating system?
SVN Revision 313. Windows 7. Mingw compiler. OpenCV 2.2. CMake 2.8.2.
Please provide any additional information below.
As opencv is constantly improving and changing, setting the opencv paths and
libs each time you update your opencv version gets tricky.
CMake can implicitly find the OpenCV required files for you by using the
command "find_package(OpenCV REQUIRED)". To make this work, several
CMakeLists.txt files need some tweaking :
* remove the FindOpenCV.cmake file in the CMakeScripts directory.
* remove the lines : #include_directories(${OpenCV_INCLUDE_DIR})
* replace the lines TARGET_LINK_LIBRARIES( ${PROJECT_NAME} ${OpenCV_LIBRARIES}
) with TARGET_LINK_LIBRARIES( ${PROJECT_NAME} ${OpenCV_LIBS} )
To avoid the policy warning you should either set the minimum required version
to 2.6 or set a cmake policy .
Original issue reported on code.google.com by [email protected]
on 18 Dec 2010 at 11:52
It seems like there's a minor copy paste error in cvLabel.cpp line 53 in trunk
where it currently asserts that "img->nChannels" is 1 and my guess is that it
should rather be "imgOut->nChannels".
Original issue reported on code.google.com by [email protected]
on 16 Dec 2011 at 10:57
Don't know if this is the right place to post this but here it goes
When I try to make the build binaries I get this error that paths to openCV
libraries and directories can't be found
http://dl.getdropbox.com/u/103464/blobcv.PNG
In the FindOpenCV.cmake file I've already tried to change the paths to the
correct windows paths but to no avail. I get the same error.
cmake cache if it helps: http://dl.getdropbox.com/u/103464/CMakeCache.txt
I'm using:
opencv 1.0
cmake 2.6
version 0.9.0 of cvblob
visual studio 2008
Original issue reported on code.google.com by [email protected]
on 26 Nov 2008 at 6:33
LINK : fatal error LNK1104: cannot open file '..\lib\Debug\cvblob.lib'
Original issue reported on code.google.com by [email protected]
on 23 Oct 2012 at 11:02
When i m running cvblob "red object detection example" i a getting following
error in Visual studio 2012, CODE BLOCK IDE, NETBEAM IDE.
...test1/source.cpp:50: undefined reference to `cvLabel',
...test1/source.cpp:52: undefined reference to `cvRenderBlobs',
...test1/source.cpp:54: undefined reference to `cvFilterByArea'
After compiling i m not getting any error, but After running the program i m
facing above error i m using opencv 2.4.6 also tryed with opencv 2.4.2 Eveery
opencv code is running in above IDE but blob give an error WHY...?????????
Original issue reported on code.google.com by [email protected]
on 21 Oct 2013 at 6:02
What steps will reproduce the problem?
1. on cvblob.cpp
What is the expected output? What do you see instead?
I have a warning :
">.\cvBlob\cvblob.cpp(285) : warning C4244: 'initialisation' : conversion de
'double' en 'int', perte possible de données".
So I add a cast : int _hf = (int)floor(_h);
I think so, you can delete a line, because :
int _hf = (int)floor(_h);
int _hi = ((int)_h)%6; (delete this line?)
have same result, (to my mind), see http://www.alvyray.com/Papers/hsv2rgb.htm
What version of the product are you using? On what operating system?
v0.10.1
Please provide any additional information below.
///////////////////////////////////////////////////////////////////////////////////////////////////
// Based on http://en.wikipedia.org/wiki/HSL_and_HSV
// see also http://www.alvyray.com/Papers/hsv2rgb.htm
// hue: H -> [0, 360] ; saturation: S -> [0, 1] ; value: V -> [0, 1]
/// \def _HSV2RGB_(H, S, V, R, G, B)
/// \brief Color translation between HSV and RGB.
#define _HSV2RGB_(H, S, V, R, G, B) \
{ \
double _h = H/60.; \
int _hf = (int)floor(_h); \ //I add the cast (int)
int _hi = ((int)_h)%6; \ //_hi=_hf ... //no need _hi... (delete?)
double _f = _h - _hf; \
\
double _p = V * (1. - S); \
double _q = V * (1. - _f * S); \ //if _hf is odd
double _t = V * (1. - (1. - _f) * S); \ //if _hf is even
\
switch (_hf) \ //switch (_hi)
{ \
case 0: \
R = 255.*V; G = 255.*_t; B = 255.*_p; \
break; \
case 1: \
R = 255.*_q; G = 255.*V; B = 255.*_p; \
break; \
case 2: \
R = 255.*_p; G = 255.*V; B = 255.*_t; \
break; \
case 3: \
R = 255.*_p; G = 255.*_q; B = 255.*V; \
break; \
case 4: \
R = 255.*_t; G = 255.*_p; B = 255.*V; \
break; \
case 5: \
R = 255.*V; G = 255.*_p; B = 255.*_q; \
break; \
} \
}
///////////////////////////////////////////////////////////////////////////////////////////////////
Original issue reported on code.google.com by [email protected]
on 12 Jul 2010 at 9:52
The width and height of the resulting ROI are off by one. The inline code
right now is:
inline void cvSetImageROItoBlob(IplImage *img, CvBlob const *blob)
{
cvSetImageROI(img, cvRect(blob->minx, blob->miny, blob->maxx-blob->minx+1, blob->maxy-blob->miny+1));
};
The correct code should be:
inline void cvSetImageROItoBlob(IplImage *img, CvBlob const *blob)
{
cvSetImageROI(img, cvRect(blob->minx, blob->miny, blob->maxx-blob->minx+1, blob->maxy-blob->miny+1));
};
Original issue reported on code.google.com by [email protected]
on 15 Jul 2013 at 9:39
What steps will reproduce the problem?
1. use function cvFilterLabels
2.
3.
What is the expected output? What do you see instead?
We want a black background. We see some pixel with wrong value (because this
pixel are not check).
What version of the product are you using? On what operating system?
version 0.10.1. Windows 7, 64 bits
Please provide any additional information below.
My correction:
void cvFilterLabels(IplImage *imgIn, IplImage *imgOut, const CvBlobs &blobs)
{
CV_FUNCNAME("cvFilterLabels");
__CV_BEGIN__;
{
CV_ASSERT(imgIn&&(imgIn->depth==IPL_DEPTH_LABEL)&&(imgIn->nChannels==1));
CV_ASSERT(imgOut&&(imgOut->depth==IPL_DEPTH_8U)&&(imgOut->nChannels==1));
int stepIn = imgIn->widthStep / ( imgIn->depth / 8);
int stepOut = imgOut->widthStep / (imgOut->depth / 8);
int imgIn_width = imgIn->width;
int imgIn_height = imgIn->height;
int imgIn_offset = 0;
int imgOut_width = imgOut->width;
int imgOut_height = imgOut->height;
int imgOut_offset = 0;
if(imgIn->roi)
{
imgIn_width = imgIn->roi->width;
imgIn_height = imgIn->roi->height;
imgIn_offset = imgIn->roi->xOffset + (imgIn->roi->yOffset * stepIn);
}
if(imgOut->roi)
{
imgOut_width = imgOut->roi->width;
imgOut_height = imgOut->roi->height;
imgOut_offset = imgOut->roi->xOffset + (imgOut->roi->yOffset * stepOut);
}
char *imgDataOut=imgOut->imageData + imgOut_offset;
CvLabel *imgDataIn=(CvLabel *)imgIn->imageData + imgIn_offset;
for (unsigned int r=0;r<(unsigned int)imgIn_height;r++,
imgDataIn+=stepIn,imgDataOut+=stepOut)
{
for (unsigned int c=0;c<(unsigned int)imgIn_width;c++)
{
if (imgDataIn[c])
{
if (blobs.find(imgDataIn[c])==blobs.end()) imgDataOut[c]=0x00;
else imgDataOut[c]=(char)0xff;
}
else
imgDataOut[c]=(char)0x00; //add by me to correct bug
}
}
}
__CV_END__;
}
Original issue reported on code.google.com by [email protected]
on 30 Jun 2010 at 1:04
What steps will reproduce the problem?
when i use the cvblob.Label in "real time" with kinect (with the depth data...)
the virtual memory never stop increasing,
i read thats already hapened
http://code.google.com/p/cvblob/issues/detail?id=5&can=1&q=memory
but it's write that the code was changed... do i have a old version , or do i
have to change something in the source or in my code...
i don't see in example something like cvblob.destructBlob...
of course when i use just kinect end cv lonely it doesn't happened
What version of the product are you using? On what operating system?
1. libfreeenect (last version of git)
2. python 2.7, opencv 2.3.1a,
Please provide any additional information below.
import freenect
import cv
import frame_convert
def show_depth():
my_depth, timestamp = freenect.sync_get_depth(0)
first_depth = 1024-my_depth
image = frame_convert.pretty_depth_cv(first_depth)
grey = image
cv.Threshold(grey, grey, 100, 255, cv.CV_THRESH_BINARY)
IPL_DEPTH_LABEL = 32
labelImg = cv.CreateImage(cv.GetSize(grey), IPL_DEPTH_LABEL, 1)
blobs = cvb.Blobs()
result = cvb.Label(grey,labelImg,blobs)
while 1:
show_depth()
and ... thanks the mysterious peoples that always answer to my asking
juju
Original issue reported on code.google.com by [email protected]
on 7 Nov 2011 at 9:07
What steps will reproduce the problem?
1. Compile test_random.cpp under windows.
What is the expected output? What do you see instead?
The problems is the methods defined in #include <sys/time.h> are linux only.
What version of the product are you using? On what operating system?
Revision 273 from SVN. VS2010. Windows 7.
Please provide any additional information below.
The solution is to use a more cross-platfrom header <ctime> and replace de old
method calls :
...
clock_t t1 = clock();
unsigned int result = cvLabel(randomBinImg, labelImg, blobs);
clock_t t2 = clock();
double elapsedTime = double (t2 - t1) / CLOCKS_PER_SEC * 1000.0;
cout << elapsedTime << " miliseconds elapsed." << endl;
iter++;
averTime = (1. - 1/((double)iter))*averTime + (1/((double)iter))*elapsedTime;
...
I attach my test_random.cpp file.
Original issue reported on code.google.com by [email protected]
on 21 Nov 2010 at 7:14
Attachments:
What steps will reproduce the problem?
1. Just prefer C++ version, instead of this C version.
2.
3.
What is the expected output? What do you see instead?
want to use Mat instead of IplImage* .
What version of the product are you using? On what operating system?
I'm using OpenCV 2.4.1 + cvblob 0.10.4 .
Please provide any additional information below.
To convert from Mat to IplImage* is a bit complicated.
Original issue reported on code.google.com by [email protected]
on 24 Jan 2013 at 7:59
What steps will reproduce the problem?
1. The input image has blobs made of 1 pixel.
2.
for (cvb::CvBlobs::iterator it = blobs.begin(); it != blobs.end(); it++)
{
cvb::CvBlob* blob = it->second;
cvb::CvContourChainCode cc = blob->contour;
cvb::CvContourPolygon* polygon = cvb::cvConvertChainCodesToPolygon(&cc); // Debug assertion failed!
What is the expected output? What do you see instead?
When dealing with 1-pixel area blobs, the method cvConvertChainCodesToPolygon
exits unexpectedly, with the message:
---
Debug Assertion Failed!
Program: ...cuments\Visual Studio 2010\Projects\CppTest\Debug\CppTest.exe
File: c:\program files\microsoft visual studio 10.0\vc\include\list
Line: 207
Expression list iterator not dereferencable
---
What version of the product are you using? On what operating system?
cvblob-0.10.1
OpenCV 2.1
Visual Studio 2010
Windows 7
Thanks again for your great work!
Original issue reported on code.google.com by [email protected]
on 12 Aug 2010 at 9:43
I'm compiling cvblob using CMake/VS10 on Windows 7 64-bit, with the root
directory at C:/Program Files/cvblob
It compiles fine, but the generated cvBlobConfig.cmake contains (what I believe
to be) a subtle error. The lines:
# ======================================================
# Include directories to add to the user project:
# ======================================================
INCLUDE_DIRECTORIES(C:/Program Files/cvBlob/include/) <----- THIS LINE
# Provide the include directories to the caller
SET(cvBlob_INCLUDE_DIRS C:/Program Files/cvBlob/include/)<----- THIS LINE
identify the include path without quote makes, which gets interpreted by CMake
as two directories, "C:/Program" and "Files/cvBlob/include". Obviously, this
means the library's include files cannot be found when compiling my project.
Original issue reported on code.google.com by [email protected]
on 1 May 2013 at 1:18
May i know hw to compile cvBlob into opencv by using window system?
Original issue reported on code.google.com by [email protected]
on 3 Jun 2011 at 3:42
Hi Guys,
I tried to run the test code in Release (Speed Optimization,...)
and it crashes.
(ITERATOR LIST CORRUPTED IN cvLabel)
Thanks for the helps
Dan
Original issue reported on code.google.com by [email protected]
on 9 Jan 2009 at 3:20
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.