- Fix
FFmpegFrameGrabber.grab()not returning audio frames buffered by the codec (issue #1971) - Upgrade dependencies for OpenBLAS 0.3.23, OpenCV 4.7.0, FFmpeg 6.0 (issue #1693), librealsense2 2.53.1, Leptonica 1.83.0, Tesseract 5.3.1
- Override
FFmpegFrameGrabber.getVideoCodecName()/getAudioCodecName()to return names of opened codecs (pull #1901) - Add
FrameGrabber.videoDisposition/audioDispositionproperties to select streams by disposition (pull #1879) - Work around
OpenKinect2FrameGrabberfailing when provided with a pipeline on some system (pull #1886) - Fix
FFmpegFrameRecorder.record()incorrectly flushing the video codec on data frames (issue #1858) - Improve accuracy of
FFmpegFrameGrabber.setFrameNumber()(pull #1851) - Add
FrameGrabber.resetStartTime()to allowgrabAtFrameRate()after operations such as seeking (pull #1846) - Add
FrameGrabber.videoSideData/audioSideDataproperties andFFmpegFrameGrabber.getDisplayRotation()for convenience (issue #1361) - Add to
FFmpegFrameGrabberandFFmpegFrameRecorderconstructors taking aURLfor convenience and clarity - Fix incorrect call to
opencv_calib3d.stereoRectify()inProjectiveDevice(issue #1802) - Retry after 10 ms when
av_read_frame()returnsEAGAINinFFmpegFrameGrabber.grabFrame()(issue #1784) - Append
frame_rate=%d/%dinput parameter inFFmpegFrameFilteras required byxfade(issue #1776) - Update
FFmpegStreamingTimeoutsample to usetimeoutinstead ofstimeoutfor RTSP (pull #1758) - Restore static calls to
FFmpegFrameGrabber.tryLoad()andFFmpegFrameRecorder.tryLoad()(issue #1756) - Enable by default on
RealSense2FrameGrabber.start()all color, depth, and IR streams asvideoStream(pull #1750) - Upgrade dependencies for OpenBLAS 0.3.21, OpenCV 4.6.0, FFmpeg 5.1.2, Leptonica 1.82.0 (pull #1791), Tesseract 5.2.0
- Fix accuracy and latency issues with
FFmpegFrameGrabber.setVideoFrameNumber()(pull #1734) - Add new
Frame.pictTypefield set toI,P,B, etc byFFmpegFrameGrabber(pull #1730) - Set metadata for
AVFrame.opaqueinFFmpegFrameGrabberwith call toav_frame_copy_props()(issue #1729) - Add
charsetproperty toFrameGrabberandFrameRecorderto use for metadata from FFmpeg (pull #1720) - Call
Frame.close()on temporary clones inJava2DFrameUtilsto prevent premature deallocations (issue #1716) - Ignore errors from
avcodec_send_packet()andavcodec_receive_frame()to emulate old API inFFmpegFrameGrabber(issue #1679) - Upgrade dependencies for OpenBLAS 0.3.19, OpenCV 4.5.5, FFmpeg 5.0, librealsense2 2.50.0, Leptonica 1.82.0, Tesseract 5.0.1
- Enhance audio and video synchronization of
JavaFxPlayVideoAndAudiosample (pull #1662) - Add
FrameGrabber.grabAtFrameRate()to simulate a device or stream when reading from files (pull #1659) - Update
FFmpegFrameGrabberandFFmpegFrameRecorderwith newavcodecAPI (issue #1498) - Add new
Similaritysample with PSNR and MSSIM (pull #1622) - Avoid crash in
FFmpegFrameRecorder.stop()by movingav_write_trailer()out offlush()(issue #1616) - Upgrade dependencies for OpenBLAS 0.3.17, OpenCV 4.5.3, FFmpeg 4.4, librealsense2 2.44.0, Leptonica 1.81.1
- Have
FrameandFrameConverterimplementAutoCloseableto release memory explicitly (issue #1574) - Add new
YOLONetsample for object detection (pull #1595) - Fix crash on
FFmpegFrameGrabber.stop()when inImageMode.RAW(issue #1568) - Let
FFmpegFrameRecorder.flush()ignore errors from the encoder (issue #1563) - Improve
FFmpegFrameGrabber.setTimestamp()and fixgetAudioFrameRate()(pull #1559) - Fix frame rate and aspect ratio on
FFmpegFrameRecorder.start(AVFormatContext)(pull #1535) - Upgrade dependencies for OpenBLAS 0.3.13, OpenCV 4.5.1, FFmpeg 4.3.2, librealsense2 2.40.0
- Update unit tests to use codecs available in FFmpeg under LGPL v3 (pull bytedeco/javacpp-presets#950)
- Add
RealSense2FrameGrabber.tryLoad()method and missing entries for librealsense2 (issue bytedeco/procamcalib#25)
- Fix error message thrown from
FFmpegFrameRecorder.start()not containing filename (pull #1492) - Fix
FFmpegFrameFilter.pull()not returning audio/video frames without audio/video filtergraph (issue #1466) - Update
OpenCVFrameConverter.convertToOrgOpenCvCoreMat()with new API to set the stride (issue #1460) - Fix memory leaks and reduce memory fragmentation in
FFmpegFrameGrabberandFFmpegFrameRecorder(issue #1366) - Use
PointerScopeinFFmpegFrameFilter,FFmpegFrameGrabber, andFFmpegFrameRecorderto deallocate quickly temporary buffers (issue #1383) - Fix
FFmpegFrameFilterby callingString.format()withLocale.ROOT(pull #1441) - Increase thread safety of
FFmpegFrameFilter,FFmpegFrameGrabber, andFFmpegFrameRecorderwithsynchronizedmethods (issue #1434) - Upgrade dependencies for OpenBLAS 0.3.10, OpenCV 4.4.0, FFmpeg 4.3.1, and Leptonica 1.80.0
- Add
FFmpegFrameGrabber.start(boolean findStreamInfo)parameter to minimize startup time (issue #1376) - Let
FFmpegFrameGrabber.grab()return non-audio/video streams as newFrame.DATAtype (pull #1378) - Fix crash in
FFmpegFrameRecorder.flush()for HLS format and possibly others (pull #1374) - Fix "Resetting to invalid mark"
IOExceptionthrown onFFmpegFrameGrabber.release()(issue #911) - Upgrade dependencies for OpenBLAS 0.3.9, OpenCV 4.3.0, FFmpeg 4.2.2, Leptonica 1.79.0, and Tesseract 4.1.1
- Add
SeekableandSeekableByteArrayOutputStreamto be used withFFmpegFrameRecorder(pull #1350) - Update
RealSense2FrameGrabberwith support for sensor options and fix for multiple devices (pull #1348)
- Increase thread safety of
FFmpegFrameFilter,FFmpegFrameGrabber, andFFmpegFrameRecorderwithvolatile boolean startedflag (pull #1325) - Let
FFmpegFrameFilter.push(null)indicate EOF to audio filters as well (issue #1315) - Add
RealSense2FrameGrabberto capture images with librealsense2 (pull #1316) - Disable seek function in
FFmpegFrameGrabberwhenmaximumSize <= 0(issue #1304) - Use
Pointer.retainReference()to preventPointerScopefrom deallocating globally shared callback objects for FFmpeg - Fix
FFmpegFrameRecorderfailing to encodefloatsamples in MP3 (issue #1294) - Fix
OpenCVFrameConvertererror inIPCameraFrameGrabber(pull #1278) - Allow setting properties for
OpenCVFrameGrabberandOpenCVFrameRecorderwithsetOption()(issue #1269) - Add missing
requires java.desktoptomodule-info.java(issue #1265) - Upgrade dependencies for OpenBLAS 0.3.7, OpenCV 4.1.2, FFmpeg 4.2.1, librealsense 1.12.4, and librealsense2 2.29.0
- Work around
swscalebug inFFmpegFrameGrabberfor images with unaligned width (issue #845) - Add support for
AVSEEK_SIZEtoFFmpegFrameGrabberas required by MPEG-TS (issue #1234) - Throw exception on
start()for already startedFFmpegFrameFilter,FFmpegFrameGrabber, orFFmpegFrameRecorder(issue #1233) - Add dependency on OpenBLAS/MKL, now used by OpenCV to accelerate some matrix operations
- Upgrade dependencies for OpenCV 4.1.0, libdc1394 2.2.6, and Tesseract 4.1.0
- Add support for
Frame.timestamptoFFmpegFrameFilter(issue #1177)
- Override methods in
FFmpegFrameGrabberto get all metadata from streams (issue #1180) - Fix sample rate in output of
FFmpegFrameRecorderby setting deprecatedAVStream.codec.time_base(issue #1179) - Add
asetpts=Nto input ofFFmpegFrameFilterto make filters likeafadebehave as expected (issue #1171) - Use
AVFormat.format()fromFrame.opaquewhen available inFFmpegFrameFilterandFFmpegFrameRecorder(issue #1173) - Enable multithreading for all codecs by default in
FFmpegFrameGrabberandFFmpegFrameRecorder(issue #1163) - Improve thread safety of
FFmpegFrameRecorderandJava2DFrameConverterby relying less onBuffer.position(pull #1166) - Use ModiTect to compile
module-info.javawith JDK 8 and preserve backward compatibility - Add
FFmpegFrameRecorder.closeOutputStreamandFFmpegFrameGrabber.closeInputStreamproperties to leave streams opened (issue #1149) - Add
FFmpegFrameRecorder.flush()method that does not release the stream (issue #1149) - Readd
synchronizedblocks forFFmpegFrameGrabberandFFmpegFrameRecorder, but make unsafe methods public (issue #1139) - Allocate native memory for
FrameusingPointerto allow deallocation withPointerScope(issue #1152) - Add
module-info.javaand depend on modularized JavaCPP Presets to comply with JPMS - Upgrade dependencies for FFmpeg 4.1.3, libfreenect 0.5.7, and Leptonica 1.78.0
- Allow allocation of
Frameimages with custom strides - Take into account
Bitmap.getRowBytes()inAndroidFrameConverter.convert(Bitmap)(issue #1143) - Add
static { Loader.load(); }inLeptonicaFrameConverterandOpenCVFrameConverterto prevent link errors (issue #1128)
- Add
FFmpegFrameGrabber(InputStream, int)constructor to set the maximum cache size used for seeking - Set
ptsanddtsforAVPacketinFFmpegFrameRecorder.recordPacket()(pull #1097) - Prevent premature deallocations with
LeptonicaFrameConverter(issue bytedeco/javacpp#272) andOpenCVFrameConverter.IplImage(issue #1101) - Fix
OpenCVFrameGrabberfrom crashing when inImageMode.GRAY - Add support for multiple inputs to
FFmpegFrameFilter(issue #955) - Fix fps in output of
FFmpegFrameRecorderby setting deprecatedAVStream.codec.time_base(issue #1069) - Fix memory leak in
FFmpegFrameRecorderonwritePacket()(issue #1068) - Upgrade dependencies for OpenCV 4.0.1, FFmpeg 4.1, FlyCapture 2.13.3.31, Leptonica 1.77.0, and Tesseract 4.0.0
- Add
imageScalingFlagsproperty toFrameGrabberandFrameRecorder, withSWS_BILINEARas default for FFmpeg (issue #845) - Add
OpenCVFrameConverter.ToOrgOpenCvCoreMatto easily but efficiently get image data from official Java API of OpenCV (issue bytedeco/javacpp#38) - Keep globally shared callback objects for FFmpeg out of
PointerScope(issue #911) - Upgrade dependencies for OpenCV 3.4.3, FFmpeg 4.0.2, and Tesseract 4.0.0-rc2
- Update the
Democlass to use the C++ API of OpenCV (issue #1042) - Add new
DeepLearningFaceDetection(pull #1041) andPerspectiveWarpDemo(pull #1066) samples
- Allow
FFmpegFrameGrabberto use accelerated decoders withvideoCodecNameandaudioCodecNameproperties (pull #948) - Add new
KazemiFacemarkExampleandLBFFacemarkExampleWithVideosamples (pull #1030) - Expose
apiPreferenceconstructor argument ofVideoCapturetoOpenCVFrameGrabber(pull #1025) - Add
LeptonicaFrameConverterto easily but efficiently pass image data to Tesseract (issue bytedeco/javacpp-presets#224) - Update
RecordActivityto fix issue with pixel formats (issue #979) - Fix
FFmpegFrameFilterto support negative strides returned by "vflip" (pull #977) - Fix
FFmpegFrameFilteron Mac throwing "Resource temporarily unavailable" (issue #974) - Upgrade dependencies for OpenCV 3.4.2, FFmpeg 4.0.1 and Tesseract 4.0.0-beta.3
- Add initial limited version of
JavaFXFrameConverter(pull #969) - Revert default behavior of
FFmpegFrameGrabber.setTimestamp()to previous version (pull #949) - Add support for audio frames to
FFmpegFrameFilter(issue #492) - Add
setpts=Nto input ofFFmpegFrameFilterto makefadeandoverlayfilters behave as expected (issue #667) - Fix crash on
FFmpegFrameRecorder.stop()when no audio samples are left to write
- Improve seeking and frame number estimates in
FFmpegFrameGrabber(pull #908) - Add
maxBFrames,trellis, andmaxDelayproperties toFFmpegFrameRecorder(pull #939) - Introduce
FFmpegFrameGrabber.maxDelayproperty (pull #938) - Upgrade dependencies for OpenCV 3.4.1, FFmpeg 3.4.2
- Allow enabling streams with
RealSenseFrameGrabber.setFormat()for compatibility (pull #922) - Process audio frames after
FFmpegFrameGrabber.setTimestamp()to avoid corrupted images (issue #896) - Fix
FFmpegFrameRecordernot flushing all audio samples properly (pull #886) - Give access to pixel format, etc for images returned by
FFmpegFrameFilter.pull()(issue #887)
- Decode audio frames on
FFmpegFrameGrabber.setTimestamp()to avoid sync issues (pull #871) - Give access to options and metadata
MapfromFrameGrabberandFrameRecorder(issue #858) - Make
FFmpegFrameGrabber(InputStream)andFFmpegFrameRecorder(OutputStream)thread-safe - Add new
OpenCVFeatures2dSerializationsample (pull #842) - Upgrade dependencies for OpenCV 3.4.0, FFmpeg 3.4.1, librealsense 1.12.1
- Fix potential audio read issue in
WebcamAndMicrophoneCapturesample (issue #826) - Update
JavaFxPlayVideoAndAudiosample to supportFrameGrabber.sampleModeproperty (issue #820) - Set the
Frame.timestampfield onFFmpegFrameGrabber.grab()(pull #810) - Fix image loading issue with the
CaffeGooglenet.javasample (pull #805) - Prevent
FFmpegFrameGrabber.setTimestamp()from going into an infinite loop (issue #731) - Fix
FFmpegFrameRecorder.record()when called withAV_PIX_FMT_NV21(pull #787) - Add
FFmpegLockCallbackto use more efficient thread-safe mechanisms (pull #770) - Make
FFmpegFrameGrabbersupport streams with changing resolution (pull #769) - Add new
DeinterlacedVideoPlayersample (pull #757)
- Fix
Java2DFrameConverter.cloneBufferedImage()not copying the data (pull #739) - Make sure
OpenCVFrameConverteralways resetsFrame.opaqueeven whenPointeris equal (issue deeplearning4j/DataVec#316) - Fix
OutputStreamleak inFFmpegFrameRecorder(pull #727) - Synchronize on
FFmpegFrameRecorder.stop()to avoid potential race conditions (issue #700) - Add
src/main/java/cl/eye/CLCamera.javato remove build dependency on external module - Fix seeking issues with
FFmpegFrameGrabber(InputStream)(pull #703) - Upgrade dependencies for FFmpeg 3.3.2, FlyCapture 2.11.3.121 (pull bytedeco/javacpp-presets#424)
- Initialize the
avdevicemodule forFFmpegFrameRecorderin the same way as withFFmpegFrameGrabber - Add
FrameGrabber.sampleModeproperty and haveFFmpegFrameGrabberconvert audio samples to user-specified format (issue #18) - Add new
ImageSegmentation(pull #460) andFFmpegStreamingTimeout(pull #712) samples - Fix up and add missing functionality to
FlyCapture2FrameGrabber(pull #655) - Take
OpenCVFrameGrabber.setFormat()value to set FOURCC ofVideoCapture(pull #651) - Fix call to
FaceRecognizer.predict()in samples (issue #642)
- Add
Java2DFrameUtilsto facilitate conversion betweenFrame,BufferedImage,IplImage, andMat - Add new
JavaFxPlayVideoAndAudiosample (pull #618) - Get rid of deprecated calls in
FFmpegFrameFilter,FFmpegFrameGrabberandFFmpegFrameRecorder(issue #607) - Fix crash in
FFmpegFrameGrabber.restart()(issue #605) - Upgrade dependencies for OpenCV 3.2.0, FFmpeg 3.2.1, libdc1394 2.2.5
- Let
FFmpegFrameRecorderpass options to the protocol as well (issue #598) - Add
RealSenseFrameGrabberandOpenKinect2FrameGrabbertoFrameGrabber.listto have them loaded by default - Remove confusing and no longer useful profiles from the
pom.xmlfile - Provide new
FFmpegFrameGrabber(InputStream)andFFmpegFrameRecorder(OutputStream)constructors (issue #95) - Make
FrameFilter,FrameGrabber, andFrameRecorderimplementCloseableto let us try-with-resources - Fix potential crash when recording audio with
FFmpegFrameRecorder - Add
OpenKinect2FrameGrabberto capture images with libfreenect2 (pull #584) - Add
OpenKinectFrameGrabber.grabIR()and stabilizeRealSenseFrameGrabber(pull #585)
- Fix unnecessary memory allocation in
OpenCVFrameGrabber(pull #575) - Add
FFmpegFrameFiltertoRecordActivitysample for Android (pull #550) - Introduce platform artifact for easier cross-platform builds and to avoid issues with some build systems (issue #395)
- Add
RealSenseFrameGrabberto capture images with librealsense (pull #486) - Add
BioInspiredRetina.javasample for theopencv_bioinspiredmodule (pull #505) - Update the
JavaCVclass with appropriate documentation comments (issue #444) - Fix Javadoc links for externally referenced classes
- Fix seeking when calling
FFmpegFrameGrabber.setTimestamp()on audio-only files - Add more appropriate default pixel formats for JPEG formats in
FFmpegFrameRecorder(issue #410)
- Optimize
AndroidFrameConvertera bit and add a test (pull #379) - Fix
DC1394FrameGrabberon the Windows platform (issue bytedeco/procamcalib#4) - Support
AVPacketinFFmpegFrameGrabberandFFmpegFrameRecorderto copy without re-encoding (issue #93) - Lower Maven prerequisite in the
pom.xmlfile to 3.0 (issue bytedeco/javacpp#93) - Add new
PrincipalComponentAnalysissample (pull #373) - Upgrade
OpenCVFrameRecorderto use the new C++VideoWriterAPI (pull #370) - Upgrade
OpenCVFrameGrabberto use the new C++VideoCaptureAPI (pull #361) - Add
CaffeGooglenet.javasample for theopencv_dnnmodule (pull #341) - Clean up
IPCameraFrameGrabberand fix incorrectly reading some headers (pull #323, pull #345) - Fix swallowed
InterruptedExceptionand throw appropriate exception inFrameGrabber.start()(issue #315) - Fix
IPCameraFrameGrabber.stop()not checking for null (pull #300) - Upgrade dependencies for OpenCV 3.1.0, FFmpeg 3.0.2, FlyCapture 2.9.3.43, libdc1394 2.2.4
- Let users call
FFmpegFrameFilter.push(null)to indicate EOF, as required by some filters like "palettegen" (issue #287) - Call
cvHaarDetectObjects()withCV_HAAR_FIND_BIGGEST_OBJECT | CV_HAAR_DO_ROUGH_SEARCHinstead ofCV_HAAR_DO_CANNY_PRUNINGin the face detection samples to get acceptable performance with OpenCV 3.0 (issue #272) - Change
WakeLockforkeepScreenOninAndroidManifest.xmlfile and addsetPreviewDisplay()call onsurfaceChanged()event for theRecordActivitysample (pull #269, pull #271)
- Make
FrameConverterfor images returnnullwhenFrame.image == null(issue #249) - Add
FFmpegLogCallbackto redirect easily to Java log messages from FFmpeg - Upgrade all Maven dependencies and plugins to latest versions, thus bumping minimum requirements to Java SE 7, Android 4.0, and Maven 3.0
- Fix broken
FFmpegFrameGrabber.grabImage()aftersetTimestamp()(issue #236) - Add
FFmpegFrameGrabber.grabSamples()to grab only audio samples, and ignore video frames (issue #235) - Fix broken
setVideoCodecName()andsetAudioCodecName()forFFmpegFrameRecorder(issue #229) - Remove
FaceRecognition.javasample, which requires the deprecatedopencv_legacymodule (issue #200) - Fix potential crash in
ObjectFinderwith FLANN (issue #210) - Add
FFmpegFrameFilterto let users processFrameimages withlibavfiltereasily (issue #164) - Add
FaceRecognizerInVideo.javasample that does a combo of face detection and recognition (issue #203) - Return
AVStream.r_frame_ratewhenAVStream.avg_frame_rateis invalid inFFmpegFrameGrabber.getFrameRate()(issue #292) - Update some samples to make them work with OpenCV 3.0
- Add new convenience
FFmpegFrameRecorder.record(Frame frame, int pixelFormat)method (issue #181) - Let
Java2DFrameConverter.copy()fromByteBufferwith 4 channels toBufferedImage.TYPE_INT_RGB, among others, also taking into account theflipChannelsargument (issue #181)
- Offer the Apache License, Version 2.0, as a new choice of license, in addition to the GPLv2 with Classpath exception
- Upgrade support to OpenCV 3.0.0
- Upgrade supported FFmpeg API to the 2.7 release branch
- Switch descriptor used by
ObjectFinderfrom SURF to AKAZE - Let users get resized images from
FFmpegFrameGrabberby callingsetImageWidth()andsetImageHeight()beforestart() - Add check for supported display size in the
RecordActivitysample (pull #153) - Clarify the semantics of
FrameConverter(issue #150) - Fix
FFmpegFrameRecordernot saving the last few frames, especially when encoding with x264 (issue #50) - Add
FrameConverterTestand fix a couple of bugs uncovered by it - Make
Frame implements Indexablefor easy and efficient access to image pixels - Fix
AbstractMethodErrorthrown fromOpenCVFrameConverteron some versions of the JDK (issue #143) - Add
FFmpegFrameGrabber.grabImage()method to restore the functionality previously provided byIplImage grab()(issue #116) - Give users of
FFmpegFrameGrabberandFFmpegFrameRecorderaccess to more options and metadata (issue #132) - Add the ability to specify from which video and audio streams
FFmpegFrameGrabbershould grab from (issue #135) - Fix
Java2DFrameConverterwhen used withBufferedImage.TYPE_INT_RGBor other types based onint(issue #140) - Add new
WebcamAndMicrophoneCapturesample (pull #131) - Add
aspectRatioproperty toFrameGrabberandFrameRecorder, to be able to use pixel aspect ratios other than 1.0 (issue #90)
- Upgrade support to OpenCV 2.4.11
- Upgrade supported FFmpeg API to the 2.6 release branch
- Add new
Squaresample, thanks to Geir Ruud - Add
AndroidFrameConverter,Java2DFrameConverterandOpenCVFrameConverter, and use them to refactorFrame,CanvasFrame,FrameGrabber, andFrameRecorderin a way to help users avoid coupling with Android, Java 2D, or OpenCV (issue #84) - Fix
Democlass in theREADME.mdfile (issue #102) - Add new
ColoredObjectTracksample (pull #99) - Add
optionproperty toFFmpegFrameGrabberto let users set such things as "analyzeduration", "probesize", or "list_devices" - Fix "AVFrame.format is not set" and "AVFrame.width or height is not set" warning messages (issue #76)
- Upgrade support to OpenCV 2.4.10
- Upgrade supported FFmpeg API to the 2.5 release branch
- Fix
time_basewarnings displayed byFFmpegFrameRecorder(issue #75) - Add new
TemplateMatchingsample, thanks to Waldemar Neto - Update instructions in the
README.mdfile for manual installation in Android Studio - Replace deprecated
CvMatandIplImagefunctionality used in theDemoclass with newIndexerAPI, and provide samplepom.xmlfile for Maven - Make
FFmpegFrameGrabber.getFrameRate()returnAVStream.avg_frame_rateinstead ofr_frame_rate(issue #63) - Disable DocLint, which prevents the build from succeeding on Java 8 (issue bytedeco/javacpp#5)
- Add
FlyCapture2FrameGrabberwith cross-platform support of FlyCapture2 (pull #45) - Fix issue that would prevent
CanvasFramefrom working on Mac OS X with recent versions of the JDK (issue #39 and issue #314) - Upgrade
RecordActivitysample with a continuous record loop, thanks to Federico Sendra and Juan Manuel Sobral - Make
FrameGrabber.createDefault()throw an exception on unsupported input, instead of returning a crypticnull(issue #30) - Add
videoCodec,videoBitrate,audioCodec, andaudioBitrateproperties toFrameGrabber - Work around
avcodecandavdevicenot loading properly forFFmpegFrameGrabberandFFmpegFrameRecorder(issue #24) - Do key frame detection in
FFmpegFrameRecorderbased onAVPacket, notAVPicture(pull #20)
- Remove
platformproperty frompom.xml, replaced with theplatform.dependencyone in JavaCPP Presets (issue #10) - Add new
RLSAsample, thanks to Nicholas Woodward (issue #469) - Fix a timestamp rounding issue in
FFmpegFrameGrabberthat causessetFrameNumber()to sometimes pick the wrong frame if FPS is not a proper divisor of 1000000 (issue #5) - Increase the flexibility of the
pom.xmlfile by making it possible to specify a custom version of JavaCPP - Add missing dependencies for JogAmp in the
pom.xmlfile (issue #2) - Add new
OpenCVFaceRecognizersample, thanks to Petter Christian Bjelland - Add new
OpticalFlowDensesample, thanks to Dawit Gebreyohannes (issue #468) - Make it easier to try out the
FaceRecognition.javasample (issue #1)
- Move from Google Code to GitHub as main source code repository
- Upgrade support to OpenCV 2.4.9
- Upgrade supported FFmpeg API to the 2.2 release branch
- Fix
FFmpegFrameRecordernot refreshing the resampler when the format of samples changes (issue #465) - Rename the
com.googlecode.javacv.cpppackage toorg.bytedeco.javacpp, andcom.googlecode.javacvtoorg.bytedeco.javacv - Removed old NetBeans project files that cause a conflict when trying to open as a Maven project (issue #210)
- Adjusted the samples a bit because of small changes in the API with the move to the JavaCPP Presets
- Fixed
ObjectFindernot working with recent versions of OpenCV, especially on Android (issue #214) - Added new
FrameRecorder.gopSizeproperty to let users set a desired GOP size instead of the default one of 12 FFmpegFrameGrabbernow takes into account calls tosetPixelFormat()(issue #429), but does not enforce it- Added a
Frame.audioChannelsfield for resampling purposes inFFmpegFrameRecorder(issue #388) - In
FFmpegFrameRecorder, fixed audio encoding with the Vorbis codec (issue #428) and the WebM container (issue #435), and other audio related things - Added missing
allocateArray()constructors toCameraParamsandMatchesInfo(issue #421) - Fixed errors such as "jniopencv_nonfree.dll: Can't find dependent libraries" by adding the
opencv_oclmodule as dependency - Added support to seek in audio-only streams with
FFmpegFrameGrabber.setTimestamp()(issue #417) - Fixed potential thread concurrency issues and crash in the
stopRecording()andonDestroy()methods of theRecordActivitysample, thanks to Jacob Duron - To capture the last frame of a video file, reverted
FFmpegFrameGrabber.setTimestamp()to its previous behavior (issue #413) - Updated
samples/FaceApplet.jnlpto make it work with JDK/JRE 7u45
- Upgraded support to OpenCV 2.4.8
- Upgraded supported FFmpeg API to the 2.1 release branch
- Updated
freenectto reflect the latest changes of OpenKinect's master branch - Updated
videoInputto reflect the latest changes in the "update2013" branch - Added
Frame.opaquefield to give access to the rawAVFramein the case ofFFmpegFrameGrabber(issue #399) - Added new
FFmpegFrameGrabber.grabKeyFrame()method to grab key frames (I-frames) directly (issue #312) VideoInputFrameGrabbernow uses 640x480 as default image size to prevent "videoInput.getPixels() Error: Could not get pixels."- Fixed
FFmpegFrameGrabber.setTimestamp()not working for streams with audio (issue #398) - Fixed wrong
haarcascade_frontalface_alt.xmlfile getting downloaded by theDemoclass (issue #402) - Added a
Frame.sampleRatefield to allow audio samples to be resampled byFFmpegFrameRecorder(issue #388) - Incorporated
IPCameraFrameGrabberfrom Greg Perry (issue #384) - Fixed thread safety issues with FFmpeg in
FFmpegFrameGrabberandFFmpegFrameRecorder(issue #377) - Fixed memory leak in the
MotionDetector.javasample file (issue #372) - New
videoCodecNameandaudioCodecNameproperties to allow users ofFFmpegFrameRecorderto use codecs such as "libx264rgb" (issue #369)
- Upgraded supported FFmpeg API to the 2.0 release branch (with Java interface files now based on code automatically produced by JavaCPP Presets)
- Fixed
FFmpegFrameGrabber.getFrameNumber() - Upgraded support to OpenCV 2.4.6
- Fixed callbacks when used with custom class loaders such as with Web containers
- Upgraded to ARToolKitPlus 2.3.0 (issue #234)
- Fixed drawing issues with
MarkerDetector.draw() - Fixed
FFmpegFrameGrabber.getTimestamp()not returning values for audio frames (issue #328) - Added new
Frame.keyFramefield returned byFFmpegFrameGrabber.grabFrame()to know when a grabbed frame is a key frame or not (issue #312) - Worked around problem in
samples/RecordActivity.javathat would happen when trying to record a frame with an invalid timestamp (issue #313) - Fixed potential resource leak that could occur after
FFmpegFrameRecorderthrowing anException - Fixed
FFmpegFrameGrabbernot returning the last few frames of video streams (issue #315) - Fixed wrong dependencies of OpenCV preventing correct loading (issue #304)
- Renamed
FrameRecorder.record(Buffer[] samples)to a cleanerrecord(Buffer ... samples)(issue #303) - Fixed
FFmpegFrameRecordernot flushing buffers onstop()(issue #302)
- Upgraded support to OpenCV 2.4.5
- Upgraded supported FFmpeg API to the 1.2 release branch
- New methods
FFmpegFrameRecorder.setVideoOption()andsetAudioOption()generalize the way to set arbitrary codec options, such as "profile", "preset", "tune", etc. used by the x264 codec - Included better format guessing inside
FFmpegFrameRecorderfor protocols like RTP - Added support for planar audio formats to
FFmpegFrameGrabberandFFmpegFrameRecorder, as required by newer versions of FFmpeg for at least MP3 and AAC - Enhanced
FFmpegFrameRecorderby making it use the closest supported frame rate for the given codec instead of failing - To support variable bitrate (VBR) encoding, appended new
videoQualityandaudioQualityproperties toFFmpegFrameRecorder, which usually have an effective range of [0, 51] and overrides thevideoBitrateandaudioBitrateproperties
- Upgraded support to OpenCV 2.4.4
CanvasFrame.waitKey(-1)does not wait anymore and returns the lastKeyEventdispatched since the last call to it- Upgraded supported FFmpeg API to the 1.1 release branch
- Fixed bug in
FaceRecognition.javasample (issue #276) - Included
Sobel(),Scharr(),Laplacian(), andCanny()fromopencv_imgprocwhose equivalent functions in the C API have missing parameters - Extended
OpenKinectFrameGrabberwithsetDepthFormat()andsetVideoFormat()methods to be able to set both formats independently (issue #273) - Fixed
Blender.blend()having its@OutputMatincorrectly annotated as@InputMat(issue #272) - Added new
RecordActivity.javaAndroid sample from Shawn Van Every and Qianliang Zhang - Added missing
allocate()methods forFunctionPointerinAVIOContextand others, which prevented these FFmpeg callbacks from functioning - Fixed infinite loop in
FrameGrabber.Array.grab()(as used by ProCamCalib in the case of stereo cameras, issue #262) whenFrameGrabber.getTimestamp()returns an invalid negative value (as withopencv_highgui) or when using different types of (unsynchronized)FrameGrabbertogether - Fixed
cvQueryHistValue_1D()and other functions that use a rawCvArrobject - Fixed problem when subclassing
CanvasFrame
- Upgraded support to OpenCV 2.4.3 (issue #233)
- Fixed functions like
Algorithm.getMat()andHOGDescriptor.getDefaultPeopleDetector()returningnullinstead of the expected data - Implemented better, more transparent, handling of
cv::Ptr - When allocating an empty
IplImage,CvMat,CvBGCodeBookModel, etc. its memory content now gets zeroed out, giving OpenCV a better chance of displaying an error message instead of crashing - Upgraded supported FFmpeg API to the 1.0 release branch
- Appended to
StringVectorandMatVectornew convenient bulk constructors andput()methods taking arrays ofString,IplImage,CvMat, etc. - Included new
Blobsmodule from David Grossman and the correspondingBlobDemosample - Added missing
opencv_core.partition()function (issue #144) - Fixed up the samples a bit (issue #229 and issue #230)
- Switched the majority of
@Adapterannotations to more concise ones like@StdVectoras allowed by new capabilities of JavaCPP - Fixed
FFmpegFrameGrabber.getLengthInFrames()andOpenCVFrameGrabber.getLengthInTime()(issue #231 and issue #236) - Enhanced
FFmpegFrameRecorderto support conversion between audio sample formats (for the experimental AAC encoder among other things) and to let two different threads callrecord(samples)andrecord(image)simultaneously, plus a couple of other features likesetFrameNumber(), which lets users skip image frames (achieving variable frame rate) - Added a
javacpp.skipproperty topom.xml, such that a command likemvn package -Pall -Djavacpp.skip=trueonly recompiles the Java source files, but also addedplatform.rootandcompiler.pathproperties, which map directly to JavaCPP's for convenience
- Provided new
javacv-linux-arm.jarbuild thanks to Jeremy Nicola (issue #184) - Additional default properties inside
pom.xmlmake it easier to build JavaCV from source (issue #202), callingmvn packagenow succeeds with only OpenCV and a C++ compiler for JavaCPP - Made a few minor updates for OpenCV 2.4.2
- New
Pointer.limitproperty of JavaCPP can now be used to get thesizeof an output parameter, and to specify the maximumsizeon input as well - Upgraded supported FFmpeg API to the 0.11 release branch
- Added audio support to
FFmpegFrameGrabber(callgrabFrame()instead ofgrab()) andFFmpegFrameRecorder(callsetAudioChannels()beforestart(), andrecord(Frame)instead ofrecord(IplImage)) (issue #160) - Gave better default
FFmpegFrameRecordersettings to H.263, MPEG-4, etc. codecs and fixed H.264 encoding with libx264 (issue #160) - Refined the
FaceAppletsample - Fixed
FlannBasedMatcherconstructor,FaceRecognizer.train(), andStitcher.stitch()/composePanorama()(issue #211) - Fixed
CanvasFramesometimes blanking out under Windows and maybe Linux (issue #212)
- Started using version numbers, friendly to tools like Maven, and placing packages in a sort of Maven repository
- JavaCV can now extract and load native dependent libraries such as
libopencv_core.so.2.4,libopencv_core.2.4.dylib,opencv_core240.dll, etc. from Java resources placed inside thecom.googlecode.javacv.cpp.<platform.name>package (i.e.: under the/com/googlecode/javacv/cpp/<platform.name>/directory of a JAR file in the classpath) (issue #146) - Included new
FaceAppletsample to demonstrate How to use JavaCV in an applet - Added handy
IplImage.asCvMat()andCvMat.asIplImage()conversion methods - Fixed a few small things with
OpenCVFrameGrabber,opencv_contrib,opencv_legacy, andopencv_stitching
- Upgraded support to OpenCV 2.4.0 (issue #187)
- Moved the source code repository to Git
- Added
pom.xmlfile for Maven support and changed the directory structure of the source code to match Maven's standard directory layout - Made it easier to create one massive statically linked native library by passing something like "-Xcompiler -Wl,-static -o javacv" as command line options to JavaCPP, usually from inside
build.xmlorpom.xml(issue #146) - Fixed missing parameter from
CvANN_MLP.create() - Added methods
cvCalcCovarMatrixEx(),cvEigenDecomposite(), andcvEigenProjection()taking anIplImage[]as argument for convenience VideoInputFrameGrabber.start()now accepts aconnectionargument such asVI_COMPOSITEto support analog cameras and what not- Fixed
FaceRecognitionsample (issue #188) - Added a few convenience methods to avoid the need to create empty
CvAttrList
- Added missing array allocators and
position()methods toKDTree.Node,DefaultRngAuto,CvAffinePose,KeyPoint,BaseKeypoint,ReferenceTrees,DMatch,*.Params,CvFuzzy*,Octree.Node,CvDefParam,Cv*Blob*,Cv*Track*,CvDrawShape,CvVectors,CvParamGrid,Cv*Params,CvSVM*,CvPair16u32s,CvDTree*CvTrainTestSplit,CvMLData,FeatureEvaluator, and*DataMatrixCode - Increased versatility of
IplImage.createFrom(),copyFrom(),copyTo(),getBufferedImage()by providing aflipChannelsparameter, whose effect was previously mistakenly forced onto four-channel images of byte values only (issue #163) - Fixed a couple of things with
CvMat.get()/put()(issue #167) - In addition to an
IplImage, we may now specify the pixel format of the data when callingFFmpegFrameRecorder.record(), but otherwise whenIplImage.nChannels == 2, it assumesPIX_FMT_NV21, allowing for easy and efficient encoding of data captured from the camera on Android (issue #160), image objects we can also convert to RGB usingcvCvtColor()withCV_YUV420sp2BGR - Fixed seeking capabilities of
FFmpegFrameGrabber(issue #162) and addedgetLengthInFrames()andgetLengthInTime()methods to query the duration of streams, when known - Enhanced
IplImage.clone()andcreate*Compatible()with cloning of theirBufferedImageto make it easier to keep color components in the right order (issue #163) - Refactored
FrameGrabberandFrameRecordera bit to accommodate newcreateDefault(...)andcreate(String className, ...)factory methods, offering to users an easier selection method to work around limitations of some APIs (issue #70) - Adjusted
GNImageAligner,ProCamTransformer, etc. to support alignment of only the projector display on textureless surface planes - Renamed a few more
Settingsproperties to reflect better their meanings
- Added
GLCanvasFrameto show OpenGL renderbuffers on screen, plus a new factory methodJavaCVCL.createCLGLImageFrom()to create compatible ones fromIplImageobjects, as well as more user-friendlygetGLContext(),getGL()andgetGL2()methods - Fixed various things of the original
CanvasFrame, andJavaCV.createCLImage()andcreateIplImage(), also appendingFromto their names - New
createPinnedBuffer()andcreatePinnedIplImage()factory methods inJavaCVCLto allocate page-locked memory for faster CPU<->GPU transfers, but it does not seem to work for OpenCL image objects, only linear buffer objects :( - Fixed and enhanced
GNImageAlignerCLandProjectorDevice(itsuseOpenGLproperty) to support fully OpenCL and OpenGL acceleration - Refactored
Parallela bit so that we may set the number of threads it uses via its staticnumThreadsproperty or the "com.googlecode.javacv.numthreads" system property, which defaults toParallel.getNumCores() = Runtime.getRuntime().availableProcessors() - Cleaned up and renamed some methods in
JavaCV, while addingboundingRect(), functionally similar tocvBoundingRect, but better adapted to compute a properly aligned and padded ROI - Inserted a couple of missing
allocate()insideopencv_flann - Updated
ObjectFinderwith aSettings.useFLANNproperty to let it use FLANN via OpenCV - Cleaned up and optimized
HandMouse CanvasFrame,FrameGrabber,FrameRecorder, andProjectiveDeviceobjects now throwExceptionobjects of a nested class instead of the too genericjava.lang.Exceptionone- Moved parallel execution of
cvkernels.multiWarpColorTransform(), modifyingImageTransformerclasses, fromGNImageAlignerintocvkernels, which now also supports other image types thanfloat - Renamed some
Settingsproperties here and there to correct typos and reflect better their meanings - Updated
freenectto reflect the latest changes of OpenKinect's master branch - FFmpeg and other libraries did not work under Android when compiled with the latest NDK, r7 (issue #147): Fixed in JavaCPP
- Moved
IplImage.timestamptoFrameGrabber, also adding aframeNumberproperty, both allowing to seek within streams too - Removed
triggerFlushSizeproperty fromCameraDeviceandFrameGrabber, instead relying on thenumBuffersproperty to decide the required size of a buffer flush - Corrected the logic behind
FFmpegFrameGrabber.getFrameRate()andgetTimestamp()(issue #151) - Created a
BufferRingclass for convenient circular rings of large buffers that require manual release of resources, such as OpenCL memory - Added a few more useful methods to
FrameGrabber, includingrestart(),flush(), anddelayedGrab()(to be used in conjunction withgetDelayedTime()andgetDelayedImage()) - Inserted
cvLoadImageBGRA()andcvLoadImageRGBA()methods intoopencv_highguito load color images compatible with OpenCL more easily JavaCvErrorCallbacknow outputs messages toLoggerinstead ofSystem.err- Defined
VI_COM_MULTI_THREADEDforvideoInput, allowing it to run on multiple threads if needed
- JavaCV should now have an easier time automatically finding libraries inside standard directories such as
/usr/local/lib/,/opt/local/lib/, andC:\opencv\, even when they are not part of the system configuration or PATH (issue #127) - Renamed
set()andfill()methods toput()insideCvPoint*classes, for better naming consistency - Renamed
FrameGrabber.ColorModetoImageModeand itsBGRvalue toCOLORto reflect the fact that aFrameGrabberinstance can return color images in some arbitrary format, but added a newpixelFormatproperty to let users know or specify the exact pixel format desired, such asPIX_FMT_BGR24, etc. in the case ofFFmpegFrameGrabber - After
FFmpegFrameGrabber.start(), theformat,imageWidth,imageHeight, andframeRateproperties switch to their effective values - Added new
FrameGrabber.sensorPatternproperty to obtain the Bayer filter layout of raw data fromDC1394FrameGrabberandFlyCaptureFrameGrabber - Readded to
KDTree,Index, andHOGDescriptorsome functions withFloatPointerandIntPointerarguments that were mistakenly removed when OpenCV switched to usingcv::InputArrayandcv::OutputArrayparameter types (issue #134) - Renamed
ProjectiveGainBiasTransformertoProjectiveColorTransformer - Added a few classes to do some processing using OpenCL and OpenGL:
JavaCVCL,GNImageAlignerCL,ProjectiveTransformerCL,ProjectiveColorTransformerCL, andProCamTransformerCLwith some other related files - Renamed
Parallel.numCoresto the more conventionalParallel.NUM_CORES - Added new
FaceRecognition.javasample from Stephen L. Reed - Inserted a couple of missing calls to
Loader.load()(issue #142) - Improved hacks for
Loader.load()in JavaCPP make JavaCV work on Android 4.0 - New
PS3EyeFrameGrabberfrom Jiri Masa can now grab images using the SDK from Code Laboratories
- Fixed
DC1394FrameGrabberandFlyCaptureFrameGrabberto behave as expected with all Bayer/Raw/Mono/RGB/YUV cameras modes (within the limits of libdc1394 and PGR FlyCapture) (issue #91) - Fixed regression of
IplImage.copyFrom()andcreateFrom()withBufferedImageobjects ofSinglePixelPackedSampleModel(issue #102) - C++ functions using
std::vectorobjects as output parameters now work on Windows Vista and Windows 7 as well
- Upgraded support to OpenCV 2.3.1
- An output argument of type
cv::Matorcv::OutputArrayreturned with a size 0 now correctly setsCvArr.address = 0 - Fixed
IplImage.createFrom()andcopyFrom()when called on objects returned byBufferedImage.getSubimage() - Added missing allocator to
CvRNG OpenCVFrameGrabbernow detects when CV_CAP_PROP_POS_MSEC is broken and gives up callingcvGetCaptureProperty()- New
OpenKinectFrameGrabber.grabDepth()andgrabVideo()methods to capture "depth" and "video" simultaneously, regardless of the mode
- Upgraded support to OpenCV 2.3.0
- Fixed
OpenKinectFrameGrabber, which can now also capture depth images whensetFormat("depth")is called beforestart() - Fixed
CvMatArrayandIplImageArrayas well as histogram related functions - Fixed
FFmpegFrameGrabber, andFFmpegFrameRecordernow works on Android also - Fixed calls, such as
opencv_flann.Index.knnSearch(), that require aMatAdapteror anArrayAdapterfor output
- New
freenectwrapper and correspondingOpenKinectFrameGrabberto capture from Microsoft's Kinect stereo camera using OpenKinect - JavaCV now exposes all C++ functions and classes of OpenCV not covered by the C API
- Fixed various erroneous declarations and calls, including those due to changes in JavaCPP
- Removed
CvMatobject pooling in favor of more efficientThreadLocalobjects created byCvMat.createThreadLocal() - Changed
Marker.getCenter()back to the centroid, because it has better noise averaging properties and gives in practice more accurate results than the actual center - Added hack to
OpenCVFrameGrabber.start()to wait forcvRetrieveFrame()to return something else thannullunder Mac OS X - FFmpeg now works properly on Windows and Android (issue #63) with newer binaries
- New
videoInputLibwrapper and correspondingVideoInputFrameGrabberto capture using DirectShow, useful under Windows 7 where OpenCV and FFmpeg can fail to capture using Video for Windows (issue #58) GeometricCalibratornow reports the maximum errors in addition to the average (RMS) errors
- Added a
formatproperty toCameraDevice,FrameGrabber, andFrameRecorder, mostly useful forFFmpegFrameGrabber, where interesting values include "dv1394", "mjpeg", "video4linux2", "vfwcap", and "x11grab" OpenCVFrameRecordernow usesCV_FOURCC_PROMPTunder Windows as default sinceCV_FOURCC_DEFAULTcrashes (issue #49)- Added hack to make sure the temporarily extracted library files get properly deleted under Windows
- JavaCPP now loads classes more lazily
- Fixed most occurences of
UnsatisfiedLinkError(issue #54), but some corner cases may require a call toLoader.load()on the class one wishes to use - Added (rudimentary) outlier detection and modified zero threshold handling in the image alignment framework
- New
JavaCV.hysteresisThreshold()feature - New
HandMousefunctionality, which depends on the image alignment framework - Fixed
ProjectiveDevice.distort(), which mistakenly undistorted images instead - New
HoughLinessample thanks to Jeremy Nicola
- Switched from JNA to JavaCPP, which has a lower overhead and supports C++, bringing hope that future versions of JavaCV will support features of OpenCV available only through the C++ API
- Consequently, the syntax of various operations have changed a bit, but the transition should not be too painful
- As a happier consequence, this also fixes the problem with SSE instructions on 32-bit x86 (issue #36)
- Also, JavaCPP does not have any limitations or performance issues with large data structures (issue #10 and issue #14)
- Added support for OpenCV 2.2 (issue #42), but dropped support for all previous versions
- Added samples provided by users (issue #1, issue #45, and issue #46)
- Added deinterlace setting to
FFmpegFrameGrabberhaving it callavpicture_deinterlace()(issue #38) - Enhanced a few things of the image alignment algorithm
- Tried to fix image format conversion inside
FlyCaptureFrameGrabber, but this is going to require more careful debugging - Fixed and added various other things I forget
- Now works on Android with the Dalvik VM (for more details, please refer to the FacePreview sample available on the download page)
- Added more hacks to
CanvasFramein the hope to make it behave better outside the EDT - Made clearer the error messages thrown from
FrameGrabberobjects, whenstart()may not have been called - Fixed version specific declarations of
CvStereoBMStateand related functions - Fixed conditions that could crash
cvkernels
- Renamed the package namespace to
com.googlecode.javacv, which makes more sense now that JavaCV has been well anchored at Google Code for more than a year, piggybacking on the unique and easy-to-remember domain name - Included new FFmpeg wrapper classes
avutil,avcodec,avformat,avdevice,avfilter,postprocess, andswscale, eliminating the need of the separate FFmpeg-Java package CanvasFramenow redraws itsCanvasafter the user resizes theFrame- Fixed the
Errorthrown when callingCanvasFrame.showImage()from the EDT - Added check to
DC1394FrameGrabberso that a "Failed to initialize libdc1394" does not crash the JVM FFmpegFrameGrabberdoes not crash anymore when forgetting to callstart()before agrab()ortrigger()FrameGrabbernow selects the default grabber a bit better- Made sweeping changes (for the better, but still not finalized) to
GNImageAligner,ProjectiveTransformer,ProjectiveGainBiasTransformer, andProCamTransformer... - Added to
JavaCVmore methods related to transformation of planes:perspectiveTransform(),getPlaneParameters(),getPerspectiveTransform(), andHtoRt(), as well asProjectiveDevice.getFrontoParallelH() - Added a static
autoSynchflag to allStructureclasses ofcxcore,cv, andcvaux, which you may set tofalseprior to the return of things like big and heavyCvSeqto make them load faster and to avoid stack overflows, but accessing fields will then require manual calls toreadField()andwriteField()(issue #10 and #14) - Added missing
ByValuesubclasses toCvSeq,CvSet,CvContourTree, andCvChain... Any others missing? - Fixed
Exceptionthrown fromcvCreateHist()under JNA 3.2.7 (issue #26) - Enhanced
CvMat.put(), which now supports setting submatrices - Improved inside
IplImagethe support ofBufferedImage, especially those using aDirectColorModel(issue #23) - Fixed crash in
cvkernelswhen color transformationXisnull
- Fixed crash that would occur in
CanvasFramefor some video drivers FFmpegFrameGrabbernow supports other input formats (devices), such asx11grabthat can be used for screencasting- Added
JavaCV.median()function, andJavaCV.fractalTriangleWave()now respects image ROI - Fixed background subtraction in
cvaux - Fixed crash inside the code for direct alignment caused by the ROI getting set outside the image plane
- Added
deltaScaleandtryToFixPlanetoGNImageAligner.Settings(the first used inImageTransformer.Parametersas increment, randomly selected forward or backward, for finite difference), which sometimes help to jump over local minima
- Removed redundant
CvMemStorage.clearMem()method, usecvClearMemStorage() - Fixed the sample
Test2class that did not work under Windows - Fixed corruption by the
cvkernelstransformerat the borders - Modified
CanvasFrameconstructors and added agammaargument used byshowImage(IplImage) CanvasFramenow lets users resize the frame, while displayed images are stretched to fit the new size- Renamed
CanvasFrame.acquireGraphics()tocreateGraphics()for consistency - When
FlyCaptureFrameGrabbercannot set fastest speed, it now safely fails by setting any supported speed - Added a new
Parallel.loop()method that can use more threads than the number of CPU cores detected - Added new
numThreadsproperty toGNImageAlignerand fixed a few minor inconsistencies as well - Fixed incorrect
Java.HnToRt(), and added a fewnorm()andrandn()methods - For functions with
float[]anddouble[]arguments incvauxandcv, added complementaryFloatBufferandDoubleBufferdeclarations - Fixed loading problems with
cvaux - Fixed and enhanced histogram, back projection, and other CAMSHIFT related functionality
- Added code for
CvRNG - Added "/opt/local/lib/" and "/opt/local/lib64/" (standard on Mac OS X) to the default list of search paths for OpenCV
- Added
CvScalar.getVal()andCvIntScalar.getVal(), which simply return thevalfield, convenient for Scala wherevalis a reserved word - Fixed the construction of
IplImagefrom aPointer - Removed incorrect cases when an
IplImagegets converted to aBufferedImage.TYPE_CUSTOM - Made
CvArr.PointerByReferencea bit more consistent and general
- Modified
IplImage,FrameGrabber, andCanvasFrameto get better default behavior of gamma correction - Fixed
cv.CvHistogramand related histogram functions CameraDevice.Settings.triggerFlushSizenow defaults to 5 (only affectsOpenCVFrameGrabberandFFmpegFrameGrabber)- Replaced
LMImageAlignerbyGNImageAligner, a more appropriate name for Gauss-Newton withlineSearch - Fixed a few things related with
ProjectiveDevice.Settings
- Added support for OpenCV 2.1
- Fixed up
clone()methods to avoid the need to cast - Removed the
fullScreenargument fromCanvasFrameconstructors, which will now switch to full-screen mode only when ascreenNumberis explicitly passed - Renamed
FrameGrabber.ColorMode.GRAYSCALEtoGRAY - Replaced deprecated functions from
FFmpegFrameGrabberandFFmpegFrameRecorder FFmpegFrameGrabbercan now resize images
- Added new classes and methods used by ProCamTracker:
cvkernels,JavaCV.fractalTriangleWave(),ImageAligner,LMImageAligner,ImageTransformer,ProjectiveTransformer,ProjectiveGainBiasTransformer,ProCamTransformer, andReflectanceInitializer CameraDevice.Settingshas a newdeviceFileproperty (used by aFrameGrabber), which brings up a file dialog for somePropertyEditors- Moved in
CameraSettings,ProjectorSettings, andFrameGrabber.PropertyEditorfrom theprocamcalibpackage - Added to
CameraDevice.SettingsandFrameGrabberatriggerFlushSizeproperty to indicate the number of buffers to flush ontrigger()to compensate for cheap cameras that keep old images in memory indefinitely - Changed the type of
CameraDevice.Settings.deviceNumbertoIntegerso we may set it tonull - Fixed and enhanced
CanvasFrame.showImage()methods a bit - In
triggerModeDC1394FrameGrabbernow tries to use a real software trigger and only falls back to one-shot mode on error - Fixed array constructors of
IplImage.PointerByReference()andCvImgObsInfo.PointerByReference() - Added
CvPoint.fillArray()methods to reuse preallocated arrays and changedcreateArray()a bit as well - Fixed and enhanced all
IplImage.copy*()methods, including new support for ROIs and subimages, which affectscreate*()andgetBufferedImage()methods as well - Updated
Markerto support different size and spacing in X and Y - Added
SettingstoObjectFinder - Fixed distortion problem in
ProjectiveDeviceandProCamColorCalibratorwith OpenCV 1.1pre1 - Split
ProjectiveDevice.SettingsintoProjectiveDevice.CalibrationSettings(for applications like ProCamCalib) andProjectiveDevice.CalibratedSettings(for applications like ProCamTracker) - Renamed
gammatoresponseGammainProjectiveDevice, and moved previousnominalDistanceparameter toSettings - Added
ProjectiveDevice.rescale()to rescale calibration parameters when switching a device to a new image size ProjectiveDevice.undistort()anddistort()can nowuseFixedPointMapsof OpenCVProjectiveDeviceand its subclasses nowthrow new Exception()if theparameterFilecannot be read
- Relicensed JavaCV under the GPLv2 with Classpath exception (see LICENSE.txt). Please note that if your application links with code that needs ARToolKitPlus, for example, it will become subject to the full GPL, without Classpath exception
- Added
devicePathsetting toCameraDevicethat works withFFmpegFrameGrabber,OpenCVFrameGrabber, and otherFrameGrabberwith a String constructor - Added "C:/OpenCV2.0/bin/release/" to the directory list to search for OpenCV DLLs
- Moved
cvFindHomography(),cvFindExtrinsicCameraParams2(),cvReprojectImageTo3D(),cvSaveImage(), andcvRetrieveFrame()to version specific classes since their number of arguments differ with the version of OpenCV - Enhanced
CvMat.put(CvMat mat)to work better even when the matrices are not actually compatible - Added new
IplImagefactory methodscreateCompatible(IplImage image),createIfNotCompatible(IplImage image, IplImage template), andcreateFrom(BufferedImage image) - Fixed
distortionCoeffscorruption that might occur inProjectiveDevice
- Added wrapper for the
cvauxmodule of OpenCV - Added abstract
FrameRecorderclass and aOpenCVFrameRecorderclass - Fixed read() problem that might occur within Pointer constructors
- Running
java -jar javacv.jarnow displays version information
- Fixed
CanvasFramefrom getting stuck in a maximized window - Removed all
setAutoWrite(false)fromcxcorenow that the bug appears fixed in JNA - Added
FFmpegFrameGrabberandFFmpegFrameRecorderto easily record live footage and grab back offline into JavaCV
- Added more convenient constructors and factory methods for
CvPoint*,CvSize*,CvRect,CvTermCriteria,CvSlice, andCvAttrList - Added R2 correlation coefficient field to
ProjectiveDevice - Enhanced and fixed color conversion spaghetti code in
FlyCaptureFrameGrabber - Fixed the
CvHaarFeatureStructure - Renamed
CvIntScalarfactory methods to match withCvScalar - Enhanced and fixed some problems with gamma correction in
IplImage - Added a
highgui.CV_FOURCC()method that takes chars as parameter - Moved
MarkedPlane.drawMarkers()toMarker.draw()for better code reuse - Added
MarkedPlane.getTotalWarp()with a "useCenters" parameter - Changed default values of
MarkerDetector.binarizationKWhiteMarkersto 1.0 andProjectorDevice.brightnessBackgroundto 0.0 - Fixed issue with image width and memory alignment in
MarkerDetector Marker.getCenter()now computes the actual physical center instead of the centroidOpenCVFrameGrabber.getDeviceDescriptions()now throwsUnsupportedOperationException- Added support in
OpenCVFrameGrabberto grab frames from video files - Added
ProjectiveDevice.getRectifyingHomography()method - Added
JavaCvErrorCallbackto easily catch errors of OpenCV in Java
- Moved the functionality of
CvMatPoolto theCvMat.take()and.pool()methods - Added color calibration for projector-camera systems (
ProCamColorCalibrator) - Updated
DC1394FrameGrabberto handle more conversion use cases automatically - Fixed
CvIntScalarto mirrorCvScalar
- Change of plan: JavaCV now works with any of OpenCV 1.0, 1.1pre1, or 2.0! Version specific functionality is enclosed in subclasses, e.g., the class
cv.v20can access everything from thecvmodule of OpenCV 2.0 - Added a few missing functions and adjusted some mappings to make them closer to the C API
- Added a few more helper methods to
CvPoint* - Added temporary storage to
ObjectFinderto plug the memory leak
- Fixed problem when loading distortion coefficients with
ProjectiveDevice - Added automatic read and write for functions with arrays of
StructureorPointerByReference - Added to
cv.javaa few missing functions related to calibration - Fixed up a bit helper methods for
CvPoint*,CvScalar,CvRect,CvBox2D,CvMat,IplImage,CvMemStorage,CvSeq, andCvSeqBlock - Added
CvMatPooltoMarkedPlaneandMarker - Added a few new
distort()methods toProjectiveDevice - Last version to support OpenCV 1.1pre1: Future version will require OpenCV 2.0
IplImagenow flips the buffer on copy if necessary- Added needed Pointer constructor for
CvSURFPointandCvConvexityDefect - Cleaned up a bit the messy Buffers in
CvMat
- Added
get*Buffer()functions toIplImage - Added more options for gamma correction in
IplImageandProjectiveDevice - Further cleaned up the namespace and constructors of
ProjectiveDevices CanvasFrame.waitKey()now only checksKeyEvent.KEY_PRESSED- Added
CvMatPoolto avoid recreating matrices - Moved
CvScalarfunctions tocxcore
- Switched to using
import staticfor relief from namespace hell - Fixed color channel reversal of Bayer images in
DC1394FrameGrabber
Initial release
This project was conceived at the Okutomi & Tanaka Laboratory, Tokyo Institute of Technology, where I was supported for my doctoral research program by a generous scholarship from the Ministry of Education, Culture, Sports, Science and Technology (MEXT) of the Japanese Government. I extend my gratitude further to all who have reported bugs, donated code, or made suggestions for improvements (details above)!