=======================================================================
PyOpenCV - A Python wrapper for OpenCV 2.x using Boost.Python and NumPy
=======================================================================

Change Log
==========

pyopencv-2.1.0.wr1.2.0 transition release
-----------------------------------------

Overview:
Starting from this release, PyOpenCV does not rely on bjam to build its
extensions anymore. The supported build tools are cmake and setuptools. 
The code is restructured into a few modules, reducing the compilation time
significantly. By using cmake, the user is able to select which module 
he/she would like to install. Aside from the usual bug fixes, there is an 
important fix of a bug that previously made PyOpenCV crash when run on 
Windows systems that have more than one runtime library of Visual C++ 2008.

Bug fixes:
- fixed a small bug with CV_RGB()
- fixed a bug in the highgui module
- added Attila's version of find_obj.py
- fixed a linking bug on Mac -- by Atilla
- fixed a bug on 32-bit vs. 64 bit issue in Py++'s from_address function 
  transformer, which affected function createTrackbar() -- thanks Attila
- fixed a warning in registering sdcpp::ndarray multiple times
- added a hack in Mingw32Compiler so that distutils can compile Boost.Python 
  code properly using Mingw
- exposed LevMarqSparse
- improved the representation string of TickMeter
- added vectorize_float64
- fully exposed CvDTreeSplit
- fully exposed CvDTreeParams and CvDTreeNode
- fully exposed CvRTParams
- exposed function calc_error() in some ML classes
- fully exposed CvRTrees, CvBoost*
- fully exposed CvANN_MLP
- fully exposed CvDTreeTrainData and CvERTreeTrainData
- fixed a bug in Mingw32Compiler that makes Python crash on Windows with msvcr90
- fixed a bug at minEnclosingCircle


pyopencv-2.1.0.wr1.1.0 transition release
-----------------------------------------

Overview:
This release mainly reverts arguments/member variables representing arrays 
in C/C++ but were replaced as Python list in previous versions back to 
std::vector instances. This step is important as it will allow PyOpenCV to
operate consistently with future versions of OpenCV. However, the reversion
implies that some function calls and some member variables accesses are
incompatible with previous versions. Therefore, you may receive a few run
time errors complaining that the function calls are not correct. Just adjust
your code to the correct calling sequences and it will be just fine.

News:
- this release has been tested on a 64-bit Ubuntu 10.4 platform and
  it has appeared to work properly -- thanks Thomas Neumann
- facedetect.py now uses my own face detection cascade which runs 3 
  times faster than OpenCV's cascade

Future plan:
- to migrate the build system from bjam to CMake -- thanks Dat Chu
- to improve the docstrings
- to modularise the code so that it can support OpenCV 2.1.1 and later

Bug fixes:
- improved some default values
- improved class CascadeClassifier
- shorten the source code significantly, no more std::allocator
- fixed HOGDescriptor and updated some demo files
- improved some default docstring
- fixed watershed.py
- added ndarray conversion for vector classes with a fixed-size element type
- sorted function arguments in docstrings
- improved the initialization of vector classes
- fixed a bug with reference counting in class sdobject
- fixed a bug that risks using freed memory in get_data() of Mat, MatND and 
  CvMat
- fixed a memory leak in creating an ndarray view
- added Thomas Newmann's patch in creating an ndarray view on 64-bit platforms
- improved CvMat.data and CvMatND.data, and fixed a bug in 
  CvSVM.get_support_vector()
- fixed i18, conversion from MatND to ndarray
- added Seq_CvConnectedComp and improved the Seq_XXXXX interface
- added vector_CvSURFPoint and vector_CvConnectedComp
- improved the constructors of MatND and SparseMat
- removed addref() and release() from Mat, MatND, and SparseMat
- improved SparseMat.size()
- exposed member functions of class KDTree
- fixed demo/kmeans.py so that it works on 64-bit platforms
- added svn:exectuable property to morphology.py
- fixed morphology.py
- fixed a bug at createTrackbar() so that it is now 64-bit compatible
  

pyopencv-2.1.0.wr1.0.2 bug-fix release
--------------------------------------

This bug-fix release mainly introduces 63 std::vector-like classes so
that in the future we can use them with ease. It also divides the very large
pyopencv_free_functions.pypp.cpp file into small files, making it less
painful to compile PyOpenCV. Other than that are usual bug-fixes, 
documentation, and addition of missing features.

- improved the docstrings of a large number of classes and functions
- fixed a small bug in kmeans.py
- added CvSize2D32f for backward compatibility
- improved and fixed a small bug in minMaxLoc()
- improved PyOpenCV to support 64-bit platforms better
- renamed Mat.to_list_of_int32() to Mat.to_list_of_int()
- renamed Mat.from_list_of_int32() to Mat.from_list_of_int()
- changed member variable 'value' of function createTrackbar() from c_int 
  to c_long
- added missing operators for C++ dense data types
- re-written wrapper classes for ndarray and sequence, hoping they would 
  fix a long-standing bug  
- converted class LineIterator into a Python iterator
- converted the wrapped functions of [set/get]TrackbarPos from C-style to 
  C++-style
- introduced function reshapeSingleChannel()
- fixed a problem with FileStorage's read/write functions: these functions 
  are split into read_...() and write_...() functions; obsolete cvRead...() 
  and cvWrite...() functions are removed
- fixed a bug at find_obj.py
- improved class FileStorage and removed deprecated class CvFileStorage
- improved class FileNode and removed deprecated class CvFileNode
- removed deprecated C-style functions cvStartReadRawData(), 
  cvGetFileNodeName(), cvOpenFileStorage(), cvGetRootFileNode(), 
  cvGetFileNode(), cvGetFileNodeByName(); use C++-style classes FileStorage 
  and FileNode instead
- removed Size2d, Rectf, and Rectd; they are not available in OpenCV 2.1
- improved ndarray's interface to suppport 64-bit platforms beteter
- split pyopencvext_free_functions.cpp into multiple files
- added new 63 of std::vector classes; for example, C++ class 
  std::vector< std::vector< cv::Point2i > > is exposed in PyOpenCV as class
  vector_vector_Vec2i
- added a representation string for each std::vector class
- function arguments std::vector<cv::Mat> are now exposed "as is"; function 
  arguments std::vector<cv::MatND> are now exposed "as is"; affected free
  functions are split(), merge(), and mixChannels()
- improved a lot of CvAux.hpp classes thanks to the availability of 
  std::vector classes
- added tolist() and fromlist() to std::vector classes
- added class Ptr<Mat>
- added functions that convert between cv::Mat and std::vector classes
- fixed demo bugs
- added 3 Filter classes: BaseColumnFilter, BaseRowFilter, and BaseFilter
- added demo morphology.py
- fixed a bug in cvCalcAffineFlowPyrLK()
- fixed a bug in cvInitSystem()
- added C++ class MemStorage
- improved a constructor of Ptr classes
- added Seq_CvSURFPoint class
- re-enabled cvExtractSURF()
- improved class CvStereoBMState
- converted every CvMemStorage variable into cv::MemStorage variables
- removed very-old-style class CvVectors
- converted every variable of type CvSize into type cv::Size2i
- converted every variable of type CvSize2D32f into type cv::Size2f
- removed classes CvSize and CvSize2D32f -- now they are redundant
- converted every variable of type CvBox2D into type cv::RoatedRect
- removed old class CvBox2D
- converted every variable of type CvTermCriteria into that of type 
  cv::TermCriteria
- removed old class CvTermCriteria
- converted every variable of type CvScalar into that of type cv::Scalar
- removed old class CvScalar, use cv::Scalar instead
- converted every variable of type CvSlice into that of type cv::Range
- removed old class CvSlice, use cv::Range instead
- converted every variable of type CvRect into that of type cv::Rect
- removed old class CvRect, use cv::Rect instead
- converted every variable of type CvMemStorage * into that of type 
  Ptr<MemStorage>
- removed class CvMemStorage, use cv::MemStorage instead
- improved member variables of type CvSeq *
- remove old C-style classes: CvSeqReader and CvSeqWriter; use 
  cv::Seq<T> instead
- improved class CvConnectedComp
- added C-style class CvMat to support backward compatibility with the ML 
  component
- improved ML classes: CvKNearest, CvEM, CvSVMParams, 
  CvNormalBayesClassifier, CvSVM
- improved ML classes: CvNormalBayesClassifier and CvDTreeTrainData
- improved a lot of other C++ classes of the ML component, thanks to the 
  existence of class CvMat
- improved asMat's docstring

pyopencv-2.1.0.wr1.0.1 bug-fix release
--------------------------------------

This bug-fix release is released earlier than scheduled due to a bug at 
file 'bjamcompiler.py', which may lead to a "Segmentation Fault" while 
building PyOpenCV on Linux. Other changes include spliting some 
meta-functions into a individual ones and removing 24 unnecessary 
Mat_<...> classes.

- fixed a bug in bjamcompiler.py that could lead to a "Segmentation Fault" 
  if numpy has not been installed at the build-time of PyOpenCV
- improved the docstrings in old-style C structures
- re-enabled CvTermCriteria to support old C-style structures
- re-enabled CvBox2D for backward compatibility with old C-style structures
- re-enabled CvPoint* classes, for backward compatibility with old C-style 
  structures
- re-enabled CvScalar to support old C-style structures
- replaced Range.as_CvSlice() with asCvSlice()
- reenabled CvSlice to support old C-style structures
- added function getOptimalNewCameraMatrix()
- added stereoRectify() and stereoRectify2()
- split function convexHull() into convexHull_int() and 
  convexHull_float32()
- split function approxPolyDP() into approxPolyDP_int() and 
  approxPolyDP_float32()
- removed the 24 Mat_<...> classes; yup, bad idea to have included them
- split RNG.uniform() into 3 functions


pyopencv-2.1.0.wr1.0.0 bug-fix release
--------------------------------------

This is the first release of PyOpenCV that supports OpenCV 2.1.0. The 
wrapper's version has been reset to 1.0.0. All new features of OpenCV 2.1.0 
have been exposed.

- added 24 Mat_<...> classes of OpenCV 2.1
- added function getCPUTickCount()
- added functions set/getWindowProperty()
- added function cvCheckHardwareSupport()
- added 4 classes: BackgroundSubtractor, BackgroundSubtractorMOG, 
  CvAffinePose, and DefaultRngAuto
- added function find4QuadCornerSubpix()
- added class StereoSGBM
- added functions filterSpeckles(), getValidDisparityROI(), and 
  validateDisparity()
- added function grabCut()
- added function cvCheckChessboard()
- added function cvCalcOpticalFlowFarneback()
- updated almost all changes in existing functions
- temporarily removed class OneWayDescriptorObject as it is somehow not 
  included in OpenCV's shared library

pyopencv-2.0.wr1.1.1 bug-fix release
------------------------------------

- improved the exposal of class CvHaarClassifier and its member variables
- re-enabled CvRect, CvSize, and CvHidHaarClassifierCascade for supporting 
  some old C code
- exposed some member variables of CvHaarClassifier
- split function_transformers.py into two
- exposed other member variables of CvHaarFeature
- improved the exposal of class FernClassifier
- improved functions calcBackProject() and calcHist()
- exposed some parts of class NAryMatNDIterator
- improved many docstrings
- added C++ functions to convert a list of Mats to a C/C++-equivalent array
- improved the docstrings of function arguments of type std::vector
- fixed some calling sequences of min(), max(), sqrt(), pow(), exp(), len()
- added docstrings to some MatND's constructors
- fixed a bug in ndarray
- added a large number of conversion functions in the form of as<ClassName>()
- added representation strings for classes Complexd and Complexf
- improved function asMat()
- added a demo of using DifferentialImage

pyopencv-2.0.wr1.1.0 beta release
---------------------------------

This release is backward-incompatible with previous releases. A large number 
of function arguments and calling sequences have been tweaked. These 
necessary tweaks would allow PyOpenCV to run slightly more efficiently and 
to be easier to use.

- added find_obj.py, a demo on using SURF and flann
- added docstrings for a large number of functions
- added code that converts between Mat and external image representations 
  like wx.Bitmap, gtk.pixbuf, PIL.Image
- provided ndarray interface for Size-like classes
- provided converters to convert between cv::Mat and Python list of items
- converted input 1d array arguments into cv::Mat
- added FernClassifier and PlanarObjectDetector classes
- improved calling sequences in classes SURF, MSER, LDetector, and 
  StarDetector
- improved all output function arguments of type std::vector
- improved get_CvMat_ptr() and get_IplImage_ptr()
- lots of bug-fixes

pyopencv-2.0.wr1.0.2 beta release
---------------------------------
- improved snakeImage()
- added 3 new classes: DifferentialImage, IntegralImage, and IntegralHistogram
- removed all the C functions related to CvHistogram. They are deprecated. Use 
  calcHist(), equalizeHist(), compareHist() instead.
- modified CascadeClassifier so that runAt() and setImage() also support old 
  cascades
- fixed a calling sequence of functions knnSearch() and radiusSearch() of class 
  Index
- added ndarray interface to Rect-like classes and the Range class
- improved the behavior of 1d array function arguments
- fixed a bug that could lead to a segfault
- added classes: IndexParams, IndexFactory
- improved SURF, mixChannels() and minMaxLoc()

pyopencv-2.0.wr1.0.1 beta release
---------------------------------

- fixed the demo files according to recent changes
- improved conversion from ndarray to Mat and MatND
- removed from_ndarray() functions
- common std::vectors of primitive data types like 'int', 'float', etc and 
  fixed-size data types like Vec-like, Point-like, Scalar are now represented 
  as ndarrays
- improved contours.py
- added a few classes of cvvidsurv.hpp, fixed a bug in OpenCV's findContours() 
  function, and added contours.py demo
- fixed a bug in getting a temporary pointer to CvMat or IplImage, this patch 
  will incur a complete rebuild if you are building pyopencv from source
- renamed convertPointsHomogeneous functions
- fixed read() and write() functions
- added some more machine-learning classes
- added a few tree-based classes
- added CvDTreeTrainData
- fixed a bug in CvEM
- fixed a bug in CvKNearest
- fixed a bug in CvNormalBayesClassifier
- fixed a bug in CvSVM
- added CvSVM::get_support_vector()
- fixed a bug in CvSVMParams
- fixed a bug in invoking Mat(int, int, int)

pyopencv-2.0.wr1.0.0 pre-beta release
-------------------------------------

- The first release of PyOpenCV. Many fundamentals of OpenCV have been
ported to Python. However, there is still some functionality not fully
available. Lots of small issues need ironing out. Just tell me which
parts you want PyOpenCV to improve and I will take time to improve them.
