1. 程式人生 > >Python學習之圖片對比和識別小記

Python學習之圖片對比和識別小記

因工作中需要對視訊圖片做處理,於是就把應用得到的幾個需求功能在網上solo了一波。

一、圖片對比

主要應用的庫Image,函式Image.size(),resize(),convert(),getpixel(),

1、根據R-G -B三原色原理:

只要使R=G=B,三者的值相等就可以得到灰度影象。R=G=B=255為白色,R=G=B=0為黑色,R=G=B=小於255的某個整數時,此時就為某個灰度值。

在python裡處理圖片直接設定mode='L'模式,Image庫原始碼處理時,根據如下公式做的RGB轉換:

L = R * 299/1000 + G * 587/1000 + B * 114/1000

2、為了處理方便,將圖片比例做一定的調整,解析度設定為12*12,獲取畫素值(灰度值)。

求出平均灰度值,SUM(畫素點的畫素)/畫素點個數;

根據處理後的圖片的畫素跟平均畫素做對比,生成影象的波動值,如下:

3、最後根據影象的波動值對比,生成兩張圖片的相似度值。

此方法比較可取的是圖片的單個畫素點的畫素(0-255)取出有固定值,一定程度上可以參照;不可取的地方是取出的平均畫素值可能相差比較大,後期優化可在此基礎上進行。

 

二、圖片文字識別

主要應用庫,pytesseract,Image,函式,pytesseract.image_to_string(),crop(),和一個重要的識別庫Tesseract-OCR。

1、得到圖片,網上很多方式,selenium裡有driver.get_screenshot_as_file()獲取截圖等其它方式。

2、擷取想要識別的圖片區域,支援英文、數字、中文等其它語言。

A = image123.jpg;

需要擷取的圖片範圍box= (68,140,232,155),這裡自定義。

需要的圖片:B = Image.open(A).crop(box).save(image124.jpg)

3、最後是識別

print(pytesseract.image_to_string(Image.open(image124.jpg)))

 

圖片識別主要是藉助識別庫裡的原始資料和現在獲取的資料做畫素對比輸出,喜歡研究的可以看看識別庫的實現。

先寫到這,希望能幫到需要圖片識別的夥伴。如有紕漏,歡迎指正!