https://github.com/symisc/pixlab-php

Official PHP Client for the PixLab Machine Vision API

https://github.com/symisc/pixlab-php

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.6%) to scientific vocabulary

Keywords

api client computer-vision machine-learning php-library pixlab
Last synced: 5 months ago · JSON representation

Repository

Official PHP Client for the PixLab Machine Vision API

Basic Info
  • Host: GitHub
  • Owner: symisc
  • License: bsd-2-clause
  • Language: PHP
  • Default Branch: master
  • Homepage: https://pixlab.io/start
  • Size: 23.4 KB
Statistics
  • Stars: 10
  • Watchers: 3
  • Forks: 0
  • Open Issues: 0
  • Releases: 3
Topics
api client computer-vision machine-learning php-library pixlab
Created almost 9 years ago · Last pushed over 2 years ago
Metadata Files
Readme License

README.md

PixLab Machine Vision APIs - Official PHP Client

GitHub package version

This is the official PixLab PHP Client for the PixLab Machine Vision API. The client is a single PHP class which let you interact with the API server using the GET and POST HTTP methods.

For the full list of samples using this class, please refer to: * PHP Code Samples * PixLab Examples Page * Implement a Minimalistic KYC Form & Identify Verification Check * Step-by-step guide to do e-KYC in your app * Scanning Malaysian, UAE, India & Others ID Cards with PixLab API

Example: Scan Passports, Visas or ID cards from various countries:

```php require_once "pixlab.php";

Given a government issued passport document, extract the user face and parse all MRZ fields.

PixLab recommend that you connect your AWS S3 bucket via your dashboard at https://pixlab.io/dashboard

so that any cropped face or MRZ crop is stored automatically on your S3 bucket rather than the PixLab one.

This feature should give you full control over your analyzed media files.

https://pixlab.io/cmd?id=docscan for additional information.

/* Passport prototype: Of course, replace with a real government issued passport if you * want to deal with a real world situation. */ $passport = 'https://i.stack.imgur.com/oJY2K.png';

Your PixLab key

$key = 'PIXLABAPIKEY';

/* Process / $pix = new Pixlab($key); if( !$pix->get('docscan',[ 'img' => $passport, / Passport scanned image / 'type' => 'passport' / Type of document we are going to scan / ]) ){ echo $pix->geterrormessage()."\n"; die; } / Output the scan result / echo "User Cropped Face: " . $pix->json->faceurl . "\n"; echo "MRZ Cropped Image: " . $pix->json->mrzimgurl . "\n"; echo "Raw MRZ Text: " . $pix->json->mrzraw_text . "\n"; echo "MRZ Fields:\n"; / Display all parsed MRZ fields */ echo "\tIssuing Country: " . $pix->json->fields->issuingCountry . "\n"; echo "\tFull Name: " . $pix->json->fields->fullName . "\n"; echo "\tDocument Number: " . $pix->json->fields->documentNumber . "\n"; echo "\tCheck Digit: " . $pix->json->fields->checkDigit . "\n"; echo "\tNationality: " . $pix->json->fields->nationality . "\n"; echo "\tDate Of Birth: " . $pix->json->fields->dateOfBirth . "\n"; echo "\tSex: " . $pix->json->fields->sex . "\n"; echo "\tDate Of Expiry: " . $pix->json->fields->dateOfExpiry . "\n"; echo "\tPersonal Number: " . $pix->json->fields->personalNumber . "\n"; echo "\tFinal Check Digit: " . $pix->json->fields->finalcheckDigit . "\n"; ```

First Example: Blur all human faces:

```php require_once "pixlab.php";

/* * Detect all human faces in a given image or video frame via facedetect and blur all of them via mogrify. * https://pixlab.io/#/cmd?id=facedetect & https://pixlab.io/#/cmd?id=mogrify for additional information. */

Target Image: Feel free to change to whatever image holding faces you want

$img = 'http://cf.broadsheet.ie/wp-content/uploads/2015/03/jeremy-clarkson_3090507b.jpg';

$key = 'MyPixKey';

$pix = new Pixlab($key); echo "Detecting faces first...\n"; /* Invoke facedetect first / if( !$pix->get('facedetect',array('img' => $img)) ){ echo $pix->geterrormessage(); die; } / Grab the total number of detected faces */ $faces = $pix->json->faces;

if( count($faces) < 1 ){ echo "No human faces were were detected on this picture\n"; }else{ echo "Total number of detected faces: ".count($faces)."\n"; echo "Censuring faces...\n"; /* Call mogrify (Only POST) */ if( !$pix->post('mogrify',array('img' => $img,'cord' => $faces)) ){ echo $pix->geterrormessage(); }else{ echo "Censured Faces: ".$pix->json->link."\n"; } } ```

Second Example: Mimic Snapchat Filters

```php /* * PixLab PHP Client which is just a single class PHP file without any dependency that you can get from Github * https://github.com/symisc/pixlab-php */ require_once "pixlab.php";

Detect all human faces & extract their landmark regions via facelandmarks & make a small Snapchat filter effect.

Only three commands are actually needed in order to mimic the Snapchat filters effects:

face landmarks: https://pixlab.io/#/cmd?id=facelandmarks

smart resize: https://pixlab.io/#/cmd?id=smartresize

merge: https://pixlab.io/#/cmd?id=merge

Optionally: blur, grayscale, oilpaint, etc. for cool background effects.

$img = 'http://cf.broadsheet.ie/wp-content/uploads/2015/03/jeremy-clarkson_3090507b.jpg';

$pix = new Pixlab('MyPixKey'); /* Grab the face landmarks first */ if( !$pix->get('facelandmarks',[ 'img' => $img ]) ){ echo $pix->geterrormessage()."\n"; die; }

$total = count($pix->json->faces); # Total detected faces print($total." faces were detected\n"); $snap = [];

Iterate all over the detected faces

foreach ($pix->json->faces as $face){ $cord = $face->rectangle; # Show the face coordinates print ("Coordinates...\n"); print ("\n\twidth: " . $cord->width . ' height: ' . $cord->height . ' x: ' . $cord->left .' y: ' . $cord->top);

# Show landmarks:
print ("\nLandmarks...\n");

$landmarks = $face->landmarks;

print ("\n\tNose: X: "       . $landmarks->nose->x      . ", Y: ".$landmarks->nose->y);
print ("\n\tBottom Lip: X: " . $landmarks->bottom_lip->x. ", Y: ".$landmarks->bottom_lip->y);
print ("\n\tTop Lip: X: "    . $landmarks->top_lip->x   . ", Y: ".$landmarks->top_lip->y);
print ("\n\tChin: X: "       . $landmarks->chin->x      . ", Y: ".$landmarks->chin->y);

print ("\n\tBone Center: X: "     . $landmarks->bone->center->x     . ", Y: ".$landmarks->bone->center->y);
print ("\n\tBone Outer Left: X: " . $landmarks->bone->outer_left->x . ", Y: ".$landmarks->bone->outer_left->y);
print ("\n\tBone Outer Right: X: ". $landmarks->bone->outer_right->x. ", Y: ".$landmarks->bone->outer_right->y);

print ("\n\tBone Center: X: " . $landmarks->bone->center->x . ", Y: ".$landmarks->bone->center->y);

print ("\n\tEye Pupil Left: X: " . $landmarks->eye->pupil_left->x . ", Y: ".$landmarks->eye->pupil_left->y);
print ("\n\tEye Pupil Right: X: " . $landmarks->eye->pupil_right->x . ", Y: ".$landmarks->eye->pupil_right->y);

print ("\n\tEye Left Brown Inner: X: " . $landmarks->eye->left_brow_inner->x . ", Y: ".$landmarks->eye->left_brow_inner->y);
print ("\n\tEye Right Brown Inner: X: " . $landmarks->eye->right_brow_inner->x . ", Y: ".$landmarks->eye->right_brow_inner->y);

print ("\n\tEye Left Outer: X: " . $landmarks->eye->left_outer->x . ", Y: ".$landmarks->eye->left_outer->y);
print ("\n\tEye Right Outer: X: " . $landmarks->eye->right_outer->x . ", Y: ".$landmarks->eye->right_outer->y); 

# More landmarks on the docs..

# Pick the last face in this loop for the sack of simplicity. Refer to the sample set for a complete example
$snap = $face;

}

Make a quick Snapchat filter on top of the last detected face

if ($total < 1){ # No faces were detected die; }

The flower crown to be composited on top of the target face

$flower = 'http://pixlab.xyz/images/flower_crown.png';

Resize the flower crown which is quite big right now to exactly the face width using smart resize.

print ("\nResizing the snap flower crown...\n"); if( !$pix->get('smartresize',[ 'img' => $flower, 'width' => 20 + $snap->rectangle->width, # Face width 'height' => 0 # Let Pixlab decide the best height for this picture ]) ){ echo $pix->geterrormessage()."\n"; }else{ $flower = $pix->json->link; }

Finally, Perform the composite operation

print ("Composite operation...\n"); if( !$pix->post('merge',[ 'src' => $img, 'cord' => [ array( /* Array for each landmarks / 'img' => $flower, 'x' => $snap->landmarks->bone->outerleft->x, 'y' => $snap->landmarks->bone->outerleft->y / Adjust for optimal effect */ ) ]]) ){ echo $pix->geterrormessage(); }else{ # Optionally call blur, oilpaint, grayscale for more stuff.. print ("Snap Filter Effect: ".$pix->json->link); } echo "\n"; ```

Third example: Blur an image or video frame based on its NSFW score

```php require_once "pixlab.php";

Target Image: Change to any link (Possibly adult) you want or switch to POST if you want to upload your image directly.

The target API endpoint we'll be using here: nsfw (https://pixlab.io/cmd?id=nsfw).

$img = 'https://i.redd.it/oetdn9wc13by.jpg';

Your PixLab key

$key = 'MyPixlabKey';

Blur an image based on its NSFW score

$pix = new Pixlab($key); /* Invoke NSFW / if( !$pix->get('nsfw',array('img' => $img)) ){ echo $pix->geterrormessage(); die; } / Grab the NSFW score / $score = $pix->json->score; if( $score < 0.5 ){ echo "No adult content were detected on this picture\n"; }else{ echo "Censuring NSFW picture...\n"; / Call blur with the highest possible radius and sigma */ if( !$pix->get('blur',array('img' => $img,'rad' => 50,'sig' =>30)) ){ echo $pix->geterrormessage(); }else{ echo "Censured Picture: ".$pix->json->link."\n"; } } ?> ```

Last example: Detect input language & extract text content from there using PixLab OCR.

```php /* * PixLab PHP Client which is just a single class PHP file without any dependency that you can get from Github * https://github.com/symisc/pixlab-php */ require_once "pixlab.php";

Given an image with human readable characters. Detect input language & extract text content from there.

https://pixlab.io/#/cmd?id=ocr for additional information.

/* Target image with human readable text input */ $img = 'http://quotesten.com/wp-content/uploads/2016/06/Confucius-Quote.jpg';

Your PixLab key

$key = 'MyPixLabKey';

/* Process */ $pix = new Pixlab($key); if( !$pix->get('ocr',array('img' => $img)) ){ echo $pix->geterrormessage()."\n"; die; } echo "Input language: ".$pix->json->lang; echo "\nText Output: ".$pix->json->output."\n";

```

Useful Links

Owner

  • Name: PixLab | Symisc Systems
  • Login: symisc
  • Kind: user
  • Company: Symisc Systems

Embedded Software, Machine Learning & Beyond

GitHub Events

Total
Last Year

Committers

Last synced: almost 3 years ago

All Time
  • Total Commits: 23
  • Total Committers: 1
  • Avg Commits per committer: 23.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Symisc Systems c****m@s****t 23
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 8 months ago

All Time
  • Total issues: 1
  • Total pull requests: 0
  • Average time to close issues: 1 day
  • Average time to close pull requests: N/A
  • Total issue authors: 1
  • Total pull request authors: 0
  • Average comments per issue: 1.0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • sarwaralamini (1)
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels

Dependencies

composer.json packagist
  • php >=5.3.0