Windows-KB841290-x86-ENU.exe
MD5值:58dc4df814685a165f58037499c89e76
---------------------------------------------------------
Version: 1.0
File Name: Windows-KB841290-x86-ENU.exe
Date Published: 8/22/2012
File Size: 117 KB
----------------------------------------------------------
Microsoft (R) File Checksum Integrity Verifier V2.05 README file
================================================================
1.What is File Checksum Integrity Verifier (FCIV)?
2.Features.
3.Syntax.
4.Database storage format.
5.Verification.
6.History.
1.What is fciv?
---------------
Fciv is a command line utility that computes and verifies hashes of files.
It computes a MD5 or SHA1 cryptographic hash of the content of the file.
If the file is modified, the hash is different.
With fciv, you can compute hashes of all your sensitive files.
When you suspect that your system has been compromised, you can run a verification to determine which files have been modified.
You can also schedule verifications regularily.
2.Features:
-----------
- Hash algorithm: MD5 , SHA1 or both ( default MD5).
- Display to screen or store hash and filename in a xml file.
- Can recursively browse a directory ( ex fciv.exe c:\ -r ).
- Exception list to specify files or directories that should not be computed.
- Database listing.
- hashes and signature verifications.
- store filename with or without full path.
3.Syntax:
---------
Usage: fciv.exe [Commands]
Commands: ( Default -add )
-add : Compute hash and send to output (default screen).
dir options:
-r : recursive.
-type : ex: -type *.exe.
-exc file: list of directories that should not be computed.
-wp : Without full path name. ( Default store full path)
-bp : base path. The base path is removed from the path name of each entry
-list : List entries in the database.
-v : Verify hashes.
: Option: -bp basepath.
-? -h -help : Extended Help.
Options:
-md5 | -sha1 | -both : Specify hashtype, default md5.
-xml db : Specify database format and name.
To display the MD5 hash of a file, type fciv.exe filename
Compute hashes:
fciv.exe c:\mydir\myfile.dll
fciv.exe c:\ -r -exc exceptions.txt -sha1 -xml dbsha.xml
fciv.exe c:\mydir -type *.exe
fciv.exe c:\mydir -wp -both -xml db.xml
List hashes stored in database:
fciv.exe -list -sha1 -xml db.xml
Verifications:
fciv.exe -v -sha1 -xml db.xml
fciv.exe -v -bp c:\mydir -sha1 -xml db.xml
4.Database storage format:
--------------------------
xml file.
The hash is stored in base 64.
<?xml version="1.0" encoding="utf-8"?>
5.Verification:
---------------
You can build a hash database of your sensitive files and verify them regularily or when you suspect that your system
has been compromised.
It checks each entry stored in the db and verify that the checksum was not modified.
6. History:
-----------
Fciv 1.2 : Added event log.
Fciv 1.21: Fixed bad keyset error on some computers.
Fciv 1.22: Added -type option. Support up to 10 masks. *.exe *.dll ...
Fciv 2.0: xml as unique storage. Added -both option.
Fciv 2.01: Exit with error code to allow detections of problem in a script.
Fciv 2.02: Improved perfs. When both alg are specified, it's now done in one pass.
Fciv 2.03: Added -wp and -bp options. Fciv now stores full path or relatives paths.
Fciv 2.04: Removed several options to simplify it.
Fciv 2.05: Added success message if the verification did not detect any errors.
对于只有一个单一方法的类或者系统来说是一样的,但是对于含有多个类和方法,且调用关系比较复杂时就不一样了。
System.
exit(-1)是指所有程序(方法,类等)停止,系统停止运行。
return只是这一个方法停止,并不影响其他方法的顺序运行。比如:
void a(){
}其中b()中是return.c()是System.
exit(-1);那么
exit方法用于中断正在运行之中的java虚拟机,其中包含的整形参数用来表示状态码。惯例来说,非零的状态码表示异常终止。零状态码表示正常终止整个程序。 if (args == null || args.length < 2) {
logger.error("非法的启动参数!");
logger.error("Usage : 1.处理周期(yyyyMMdd) 2.数据渠道(ms
System.exit(int status) :是用来结束当前正在运行中的java虚拟机。
System.exit(0) :status是零参数,那么表示正常退出程序。
System.exit(1) :status是1或者非零参数,那么表示非正常退出程序。
在一个if-else判断中,如果我们程序是按照我们预想的执行,到最后我们需要停止程序,那么我们使用System.exit(0)。
System.exit(1)一般放在catch块中,当捕获到异常,需要停止程序,我们使用System.exit.
Introduction
JavaCV uses wrappers from the
JavaCPP Presets of commonly used libraries by researchers in the field of computer vision (OpenCV, FFmpeg, libdc1394, PGR FlyCapture, OpenKinect, librealsense, CL PS3 Eye Driver, videoInput, ARToolKitPlus, and flandmark), and provides utility classes to make their functionality easier to use on the
Java platform, including Android.
JavaCV also comes with hardware accelerated full-screen image display (CanvasFrame and GLCanvasFrame), easy-to-use methods to execute code in parallel on multiple cores (Parallel), user-friendly geometric and color calibration of cameras and projectors (GeometricCalibrator, ProCamGeometricCalibrator, ProCamColorCalibrator), detection and matching of feature points (ObjectFinder), a set of classes that implement direct image alignment of projector-camera systems (mainly GNImageAligner, ProjectiveTransformer, ProjectiveColorTransformer, ProCamTransformer, and ReflectanceInitializer), a blob analysis package (Blobs), as well as miscellaneous functionality in the
JavaCV class. Some of these classes also have an OpenCL and OpenGL counterpart, their names ending with CL or starting with GL, i.e.:
JavaCVCL, GLCanvasFrame, etc.
To learn how to use the API, since documentation currently lacks, please refer to the Sample Usage section below as well as the sample programs, including two for Android (FacePreview.
java and RecordActivity.
java), also found in the samples directory. You may also find it useful to refer to the source code of ProCamCalib and ProCamTracker as well as examples ported from OpenCV2 Cookbook and the associated wiki pages.
Please keep me informed of any updates or fixes you make to the code so that I may integrate them into the next release. Thank you! And feel free to ask questions on the mailing list if you encounter any problems with the software! I am sure it is far from perfect...
Downloads
To install manually the JAR files, obtain the following archives and follow the instructions in the Manual Installation section below.
JavaCV 1.3.3 binary archive
javacv-platform-1.3.3-bin.zip (212 MB)
JavaCV 1.3.3 source archive
javacv-platform-1.3.3-src.zip (456 KB)
The binary archive contains builds for Android,
Linux, Mac OS X, and Windows. The JAR files for specific child modules or platforms can also be obtained individually from the Maven Central Repository.
We can also have everything downloaded and installed automatically with:
Maven (inside the pom.xml file)
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>
javacv-platform</artifactId>
<version>1.3.3</version>
</dependency>
Gradle (inside the build.gradle file)
dependencies {
compile group: 'org.bytedeco', name: '
javacv-platform', version: '1.3.3'
sbt (inside the build.sbt file)
libraryDependencies += "org.bytedeco" % "
javacv-platform" % "1.3.3"
This downloads binaries for all platforms, but to get binaries for only one platform we can set the
javacpp.platform system property (via the -D command line option) to something like android-arm,
linux-x86_64, macosx-x86_64, windows-x86_64, etc. Please refer to the README.md file of the
JavaCPP Presets for details. Another option available for Scala users is sbt-
javacv.
Required Software
To use
JavaCV, you will first need to download and install the following software:
An implementation of
Java SE 7 or newer:
OpenJDK http://openjdk.
java.net/install/ or
Sun JDK http://www.oracle.com/technetwork/
java/
javase/downloads/ or
IBM JDK http://www.ibm.com/developerworks/
java/jdk/
Further, although not always required, some functionality of
JavaCV also relies on:
CL Eye Platform SDK (Windows only) http://codelaboratories.com/downloads/
Android SDK API 14 or newer http://developer.android.com/sdk/
JOCL and JOGL from JogAmp http://jogamp.org/
Finally, please make sure everything has the same bitness: 32-bit and 64-bit modules do not mix under any circumstances.
Manual Installation
Simply put all the desired JAR files (opencv*.jar, ffmpeg*.jar, etc.), in addition to
javacpp.jar and
javacv.jar, somewhere in your class path. Here are some more specific instructions for common cases:
NetBeans (
Java SE 7 or newer):
In the Projects window, right-click the Libraries node of your project, and select "Add JAR/Folder...".
Locate the JAR files, select them, and click OK.
Eclipse (
Java SE 7 or newer):
Navigate to Project > Properties >
Java Build Path > Libraries and click "Add External JARs...".
Locate the JAR files, select them, and click OK.
IntelliJ IDEA (Android 4.0 or newer):
Follow the instructions on this page: http://developer.android.com/training/basics/firstapp/
Copy all the JAR files into the app/libs subdirectory.
Navigate to File > Project Structure > app > Dependencies, click +, and select "2 File dependency".
Select all the JAR files from the libs subdirectory.
After that, the wrapper classes for OpenCV and FFmpeg, for example, can automatically access all of their C/C++ APIs:
OpenCV documentation
FFmpeg documentation
Sample Usage
The class definitions are basically ports to
Java of the original header files in C/C++, and I deliberately decided to keep as much of the original syntax as possible. For example, here is a method that tries to load an image file, smooth it, and save it back to disk:
import static org.bytedeco.
javacpp.opencv_core.*;
import static org.bytedeco.
javacpp.opencv_imgproc.*;
import static org.bytedeco.
javacpp.opencv_imgcodecs.*;
public class Smoother {
public static void smooth(String filename) {
IplImage image = cvLoadImage(filename);
if (image != null) {
cvSmooth(image, image);
cvSaveImage(filename, image);
cvReleaseImage(image);
JavaCV also comes with helper classes and methods on top of OpenCV and FFmpeg to facilitate their integration to the
Java platform. Here is a small demo program demonstrating the most frequently useful parts:
import
java.io.File;
import
java.net.URL;
import org.bytedeco.
javacv.*;
import org.bytedeco.
javacpp.*;
import org.bytedeco.
javacpp.indexer.*;
import static org.bytedeco.
javacpp.opencv_core.*;
import static org.bytedeco.
javacpp.opencv_imgproc.*;
import static org.bytedeco.
javacpp.opencv_calib3d.*;
import static org.bytedeco.
javacpp.opencv_objdetect.*;
public class Demo {
public static void main(String[] args) throws Exception {
String classifierName = null;
if (args.length > 0) {
classifierName = args[0];
} else {
URL url = new URL("https://raw.github.com/Itseez/opencv/2.4.0/data/haarcascades/haarcascade_frontalface_alt.xml");
File file = Loader.extractResource(url, null, "classifier", ".xml");
file.deleteOn
Exit();
classifierName = file.getAbsolutePath();
// Preload the opencv_objdetect module to work around a known bug.
Loader.load(opencv_objdetect.class);
// We can "cast" Pointer objects by instantiating a new object of the desired class.
CvHaarClassifierCascade classifier = new CvHaarClassifierCascade(cvLoad(classifierName));
if (classifier.isNull()) {
System.err.println("Error loading classifier file \"" + classifierName + "\".");
System.
exit(1);
// The available FrameGrabber classes include OpenCVFrameGrabber (opencv_videoio),
// DC1394FrameGrabber, FlyCaptureFrameGrabber, OpenKinectFrameGrabber, OpenKinect2FrameGrabber,
// RealSenseFrameGrabber, PS3EyeFrameGrabber, VideoInputFrameGrabber, and FFmpegFrameGrabber.
FrameGrabber grabber = FrameGrabber.createDefault(0);
grabber.start();
// CanvasFrame, FrameGrabber, and FrameRecorder use Frame objects to communicate image data.
// We need a FrameConverter to interface with other APIs (Android,
Java 2D, or OpenCV).
OpenCVFrameConverter.ToIplImage converter = new OpenCVFrameConverter.ToIplImage();
// FAQ about IplImage and Mat objects from OpenCV:
// - For custom raw processing of data, createBuffer() returns an NIO direct
// buffer wrapped around the memory pointed by imageData, and under Android we can
// also use that Buffer with Bitmap.copyPixelsFromBuffer() and copyPixelsToBuffer().
// - To get a BufferedImage from an IplImage, or vice versa, we can chain calls to
//
Java2DFrameConverter and OpenCVFrameConverter, one after the other.
// -
Java2DFrameConverter also has static copy() methods that we can use to transfer
// data more directly between BufferedImage and IplImage or Mat via Frame objects.
IplImage grabbedImage = converter.convert(grabber.grab());
int width = grabbedImage.width();
int height = grabbedImage.height();
IplImage grayImage = IplImage.create(width, height, IPL_DEPTH_8U, 1);
IplImage rotatedImage = grabbedImage.clone();
// Objects allocated with a create*() or clone() factory method are automatically released
// by the garbage collector, but may still be explicitly released by calling release().
// You shall NOT call cvReleaseImage(), cvReleaseMemStorage(), etc. on objects allocated this way.
CvMemStorage storage = CvMemStorage.create();
// The OpenCVFrameRecorder class simply uses the CvVideoWriter of opencv_videoio,
// but FFmpegFrameRecorder also exists as a more versatile alternative.
FrameRecorder recorder = FrameRecorder.createDefault("output.avi", width, height);
recorder.start();
// CanvasFrame is a JFrame containing a Canvas component, which is hardware accelerated.
// It can also switch into full-screen mode when called with a screenNumber.
// We should also specify the relative monitor/camera response for proper gamma correction.
CanvasFrame frame = new CanvasFrame("Some Title", CanvasFrame.getDefaultGamma()/grabber.getGamma());
// Let's create some random 3D rotation...
CvMat randomR = CvMat.create(3, 3), randomAxis = CvMat.create(3, 1);
// We can easily and efficiently access the elements of matrices and images
// through an Indexer object with the set of get() and put() methods.
DoubleIndexer Ridx = randomR.createIndexer(), axisIdx = randomAxis.createIndexer();
axisIdx.put(0, (Math.random()-0.5)/4, (Math.random()-0.5)/4, (Math.random()-0.5)/4);
cvRodrigues2(randomAxis, randomR, null);
double f = (width + height)/2.0; Ridx.put(0, 2, Ridx.get(0, 2)*f);
Ridx.put(1, 2, Ridx.get(1, 2)*f);
Ridx.put(2, 0, Ridx.get(2, 0)/f); Ridx.put(2, 1, Ridx.get(2, 1)/f);
System.out.println(Ridx);
// We can allocate native arrays using constructors taking an integer as argument.
CvPoint hatPoints = new CvPoint(3);
while (frame.isVisible() && (grabbedImage = converter.convert(grabber.grab())) != null) {
cvClearMemStorage(storage);
// Let's try to detect some faces! but we need a grayscale image...
cvCvtColor(grabbedImage, grayImage, CV_BGR2GRAY);
CvSeq faces = cvHaarDetectObjects(grayImage, classifier, storage,
1.1, 3, CV_HAAR_FIND_BIGGEST_OBJECT | CV_HAAR_DO_ROUGH_SEARCH);
int total = faces.total();
for (int i = 0; i < total; i++) {
CvRect r = new CvRect(cvGetSeqElem(faces, i));
int x = r.x(), y = r.y(), w = r.width(), h = r.height();
cvRectangle(grabbedImage, cvPoint(x, y), cvPoint(x+w, y+h), CvScalar.RED, 1, CV_AA, 0);
// To access or pass as argument the elements of a native array, call position() before.
hatPoints.position(0).x(x-w/10) .y(y-h/10);
hatPoints.position(1).x(x+w*11/10).y(y-h/10);
hatPoints.position(2).x(x+w/2) .y(y-h/2);
cvFillConvexPoly(grabbedImage, hatPoints.position(0), 3, CvScalar.GREEN, CV_AA, 0);
// Let's find some contours! but first some thresholding...
cvThreshold(grayImage, grayImage, 64, 255, CV_THRESH_BINARY);
// To check if an output argument is null we may call either isNull() or equals(null).
CvSeq contour = new CvSeq(null);
cvFindContours(grayImage, storage, contour, Loader.sizeof(CvContour.class),
CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE);
while (contour != null && !contour.isNull()) {
if (contour.elem_size() > 0) {
CvSeq points = cvApproxPoly(contour, Loader.sizeof(CvContour.class),
storage, CV_POLY_APPROX_DP, cvContourPerimeter(contour)*0.02, 0);
cvDrawContours(grabbedImage, points, CvScalar.BLUE, CvScalar.BLUE, -1, 1, CV_AA);
contour = contour.h_next();
cvWarpPerspective(grabbedImage, rotatedImage, randomR);
Frame rotatedFrame = converter.convert(rotatedImage);
frame.showImage(rotatedFrame);
recorder.record(rotatedFrame);
frame.dispose();
recorder.stop();
grabber.stop();
Furthermore, after creating a pom.xml file with the following content:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>org.bytedeco.
javacv</groupId>
<artifactId>demo</artifactId>
<version>1.3.3</version>
<dependencies>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>
javacv-platform</artifactId>
<version>1.3.3</version>
</dependency>
</dependencies>
</project>
And by placing the source code above in src/main/
java/Demo.
java, we can use the following command to have everything first installed automatically and then executed by Maven:
$ mvn compile exec:
java -Dexec.mainClass=Demo
Build Instructions
If the binary files available above are not enough for your needs, you might need to rebuild them from the source code. To this end, the project files were created for:
Maven 3.x http://maven.apache.org/download.html
JavaCPP 1.3 https://github.com/bytedeco/
javacpp
JavaCPP Presets 1.3 https://github.com/bytedeco/
javacpp-presets
Once installed, simply call the usual mvn install command for
JavaCPP, its Presets, and
JavaCV. By default, no other dependencies than a C++ compiler for
JavaCPP are required. Please refer to the comments inside the pom.xml files for further details.
Project lead: Samuel Audet [samuel.audet at gmail.com](mailto:samuel.audet at gmail.com)
Developer site: https://github.com/bytedeco/
javacv
Discussion group: http://groups.google.com/group/
javacv