analitics

Pages

Sunday, May 5, 2019

Python 3.7.3 : Using the cognitive face detection from Azure Microsoft .

The Microsoft Azure comes with this free feature named Computer Vision:
This API key is currently active
7 days remaining
Distill actionable information from images
5,000 transactions, 20 per minute.

You can test with the cognitive_face python module from GitHub.
Another good example of extract printed text can be found at docs.microsoft.com.
Let's install it:
C:\Python373\Scripts>pip install cognitive_face
...
Installing collected packages: cognitive-face
Successfully installed cognitive-face-1.4.2
Now a simple intro using the dir:
C:\Python373>python.exe
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD6
4)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import cognitive_face as CF
>>> dir(CF)
['BaseUrl', 'CognitiveFaceException', 'Key', '__builtins__', '__cached__', '__do
c__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__
', 'face', 'face_list', 'large_face_list', 'large_face_list_face', 'large_person
_group', 'large_person_group_person', 'large_person_group_person_face', 'person'
, 'person_group', 'util']
For detections you need to use the face with detect:
import cognitive_face as CF
# Replace with your valid Subscription Key here.
KEY = '111111111111'  
CF.Key.set(KEY)
# Replace with your regional Base URL based by 
# https://azure.microsoft.com/en-us/try/cognitive-services/my-apis/?apiSlug=computer-vision

BASE_URL = 'https://westcentralus.api.cognitive.microsoft.com/vision/v2.0'  
CF.BaseUrl.set(BASE_URL)

img_url = 'https://previews.123rf.com/images/boarding1now/boarding1now150
8/boarding1now150800143/44403889-background-collage-large-group-portrait
-of-multiracial-young-smile-smiling-people-social-media.jpg'
result = CF.face.detect(img_url)
print (result)

img_url = 'https://raw.githubusercontent.com/Microsoft/Cognitive-Face-
Windows/master/Data/detection1.jpg'
result2 = CF.face.detect(img_url)
print (result2)
The result of this running code is:
C:\Python373>python.exe face_cognitive_001.py
{'objects': [{'rectangle': {'x': 145, 'y': 14, 'w': 121, 'h': 160}, 'object': 'p
erson', 'confidence': 0.535}, {'rectangle': {'x': 533, 'y': 25, 'w': 121, 'h': 1
84}, 'object': 'person', 'confidence': 0.535}], 'requestId': '9a3d41e9-b8cc-49ac
-a99b-f3da8d5fac2a', 'metadata': {'width': 1300, 'height': 866, 'format': 'Jpeg'
}}
{'objects': [{'rectangle': {'x': 236, 'y': 0, 'w': 620, 'h': 657}, 'object': 'pe
rson', 'confidence': 0.912}], 'requestId': 'fd415dd3-0f11-4cac-b307-f58888fc875a
', 'metadata': {'width': 1000, 'height': 664, 'format': 'Jpeg'}}
If you take a look at the images and results will see how this works.

Friday, May 3, 2019

Python 3.7.3 : Try Ethereum with web3.

Today I tested the web3 python module.
This is the Ethereum python module.
More about this python module can be found here.
Ethereum programming has a large area of development.
For transaction you can use:
from web3 import Web3, HTTPProvider, IPCProvider, WebsocketProvider
I tested with an account from infura.io.
>>> from web3 import Web3, HTTPProvider, IPCProvider, WebsocketProvider
>>> w3 = Web3(HTTPProvider('ropsten.infura.io/v3/1f2fb5d1e1be4c11acdbbb07a2e06a1
c'))
>>> dir(w3)
['EthereumTesterProvider', 'HTTPProvider', 'IPCProvider', 'Iban', 'RequestManage
r', 'TestRPCProvider', 'WebsocketProvider', '__class__', '__delattr__', '__dict_
_', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__',
'__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__mo
dule__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__seta
ttr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_ens', 'adm
in', 'ens', 'eth', 'fromWei', 'isAddress', 'isChecksumAddress', 'isConnected', '
manager', 'middleware_stack', 'miner', 'net', 'parity', 'personal', 'providers',
 'sha3', 'soliditySha3', 'testing', 'toBytes', 'toChecksumAddress', 'toHex', 'to
Int', 'toText', 'toWei', 'txpool', 'version']
>>> from eth_account import Account
>>> my_account = Account.create('KEYSMASH FESTILA_GEORGE_CATALIN 1530')
>>> my_account.address
'0x2b8e7E92064F718B0AC91c381968baC8D1561d7d'
>>> # check the adresss and add it to infura.io
...
>>> address=Web3.toChecksumAddress(my_account.address)
>>> print (address)
0x2b8e7E92064F718B0AC91c381968baC8D1561d7d
Let's start with the default installation and some testing with a message:
C:\Python373\Scripts>pip install virtualenv
Requirement already satisfied: virtualenv in c:\python373\lib\site-packages (16.
5.0)
C:\Python373\Scripts>cd ..
C:\Python373>virtualenv env
Using base prefix 'c:\\python373'
New python executable in C:\Python373\env\Scripts\python.exe
Installing setuptools, pip, wheel...
done.
(env) C:\Python373\Scripts>pip install web3
(env) C:\Python373\Scripts>cd ..
(env) C:\Python373>python
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD6
4)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from web3.auto import w3
>>> dir(w3)
['EthereumTesterProvider', 'HTTPProvider', 'IPCProvider', 'Iban', 'RequestManage
r', 'TestRPCProvider', 'WebsocketProvider', '__class__', '__delattr__', '__dict_
_', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__',
'__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__mo
dule__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__seta
ttr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_ens', 'adm
in', 'ens', 'eth', 'fromWei', 'isAddress', 'isChecksumAddress', 'isConnected', '
manager', 'middleware_stack', 'miner', 'net', 'parity', 'personal', 'providers',
 'sha3', 'soliditySha3', 'testing', 'toBytes', 'toChecksumAddress', 'toHex', 'to
Int', 'toText', 'toWei', 'txpool', 'version']
One example with message hashing mechanism :
>>> from web3.auto import w3
>>> from eth_account.messages import defunct_hash_message
>>> msg = "Hello world!"
>>> private_key = b"46474346474346474330313246474346"
>>> b"46474346474346474330313246474346".decode("utf-8", errors="ignore")
'46474346474346474330313246474346'
>>> signed_message = w3.eth.account.signHash(message_hash, private_key=private_
ey)
>>> signed_message
AttrDict({'messageHash': HexBytes('0xaa05af77f274774b8bdc7b61d98bc40da523dc2821f
dea555f4d6aa413199bcc'), 'r': 77081816383569854304871908993806785907809199379052
64818114708355336522791320, 's': 50065392922095131225302404096180206949656260456
560091946111418092912822128476, 'v': 27, 'signature': HexBytes('0x110aad1b6fa3f8
9ef0ceff3579de2a166c6cfefee73bd8b13364d71745f979986eb00219a1d6630a09fb0e7db3b713
51bce570d5842fa39fbae390fdfa7b0f5c1b')})