Code Monkey home page Code Monkey logo

cvblob's Introduction

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

cvblob's People

Contributors

cristobalcl avatar

Watchers

James Cloos avatar

cvblob's Issues

Problem with cv::Mat and IplImage

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

CvUpdateTracks and cvRenderTracks memory leaks

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

CMake include path misinterpreted if it has a space in it

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

Memory not deallocated?

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

advance a pointer instead of calcuating it every time?

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

Bug in cvSetImageROItoBlob

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

Wrong background in use cvFilterLabels

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

CvBlob Contour into default OpenCv Contour

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

wrapper of this library

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

Object boundry Detection‏

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

Patch for /trunk/cvBlob/cvblob.h

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:

problems with cmake

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

CvLabel not defined in IPL_DEPTH_LABEL when NOT using namespace cvb

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

test_random.cpp is not cross-platform

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:

Cannot display largest blob

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

Failed at cvb::cvRenderContourChainCode when input image has blobs made of 1 pixel

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

Problem with signed char, cvLabel hangs

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

Version 0.10.1 Access Violation in cvtrack.cpp:292

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

Crash in Release

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

relabel blobs after cvFilterByArea (feature request)

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

usage of memory never stop increasing with cvblob python libfreenect

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

Ubuntu package

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

Installation of CvBlob into OpenCV with Microsoft Visual Studio 2010 in WINDOW

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

cvblob Running error

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

_HSV2RGB_(H, S, V, R, G, B) into cvblob.cpp

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

Contour of a blob

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

C++ Version of cvblob?

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

  • Merged into: #20

cvb::cvReleaseBlobs(blobs); cause to crash when using -std=c++0x for project

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

small copy paste error in cvLabel.cpp

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

cvReleaseBlobs (EXC_BAD_ACCESS)

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

CMake improvement

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

cant compile on fedora 12 with gcc 4.4.3

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

label image widthstep incorrect

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

bug - rendering

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:

cvConvertChainCodesToPolygon error

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

error when i use cvblob python swig interface in ubuntu opencv test.py

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

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.