#OpenCV
Codebeispiele zur OpenCV Library. Für die Ausführung der Beispiele ist es notwendig die iOS Version zum Projekt hinzuzufügen.
##Allgemeines
In diesen Beispielen wird die Frontkamera verwendet.
self._videoCamera.defaultAVCaptureDevicePosition = AVCaptureDevicePositionFront;
Um die Rückkamera zu verwenden ändern Sie die defaultAVCaptureDevicePosition in viewDidLoad auf AVCaptureDevicePositionBack
self._videoCamera.defaultAVCaptureDevicePosition = AVCaptureDevicePositionBack;
Um die Auflösung der Bilder bei der Aufnahme zu verändern wählen Sie die entsprechende Auflösung als defaultAVCaptureSessionPreset
self._videoCamera.defaultAVCaptureSessionPreset = AVCaptureSessionPreset352x288;
oder
self._videoCamera.defaultAVCaptureSessionPreset = AVCaptureSessionPreset1280x720;
Bitte beachten Sie, dass die Auflösung einen Einfluss auf die Performance hat.
Wenn nicht anders genannt finden alle Änderungen in processImage statt
##Sample 1: Graustufen
Mat image_copy;
cvtColor(image, image_copy, COLOR_BGR2GRAY);
cvtColor konvertiert den Farbraum eines Bildes. In diesem Fall von BGR nach GRAY Vergessen Sie nicht das Bild am Schluss wieder nach BGR zu konvertieren um es anzuzeigen.
##Sample 2: Graustufen invertiert
bitwise_not(image_copy, image_copy);
bitwise_not invertiert alle Werte innerhalb der Bildmatrix
##Sample 3: Threshold
Es gibt in OpenCV 5 Arten des Thresholds.
- Binary
- Binary Inverted
- Threshold Truncated
- Threshold to Zero
- Threshold to Zero Inverted
threshold( image_copy, image_copy, 128, 255, 0 );
threshold führt einen Threshold auf das Bild aus. 128 ist der Grenzwert, 255 der Maximalwert und 0 die Art des Thresholds
##Sample 4: Canny Edges
Canny(image_copy, image_copy, 100, 200);
##Sample 5: Cascading Classifier
Deklaration des Classifiers im Header
CascadeClassifier faceDetector;
Laden des Classifiers aus einer Datei in viewDidLoad
NSString* cascadePath = [[NSBundle mainBundle]pathForResource:@"haarcascade_frontalface_alt" ofType:@"xml"];
faceDetector.load([cascadePath UTF8String]);
blur(image_copy, image_copy, cv::Size(3, 3) );
std::vectorcv::Rect faces; faceDetector.detectMultiScale(image_copy, faces, 1.1, 3, 0|CV_HAAR_SCALE_IMAGE, cv::Size(30, 30));
for (int i = 0; i < faces.size(); i++) {
const cv::Rect& face = faces[i];
cv::Point top_left(face.x, face.y);
cv::Point bottom_right = top_left + cv::Point(face.width, face.height);
Scalar magenta = Scalar(255, 0, 255); cv::rectangle(image, top_left, bottom_right, magenta);
}