簡體   English   中英

使用 Python 和 SciPy 進行圖像處理

[英]Image processing using Python and SciPy

我正在嘗試使用 Python 進行圖像處理。 我真正想做的是我有人類的圖像,我需要確定人臉或檢測圓圈(基本上是人臉)。 到目前為止我所做的

  1. 我已經使用 sobel 邊緣檢測對圖像進行了邊緣檢測。

  2. 然后我將圖像轉換為二進制圖像,保存二進制圖像廣告打印出 0 或 255(黑白)的圖像數組

  3. 現在我對此感到困惑的是我可以做些什么來檢測圖像中的圓圈並打印出圖像中存在多少人。

  4. 我正在使用靜止圖像,所以我提供了圖像的輸入

我正在使用 Python、PIL、NumPy 和 SciPy。 我不想使用 OpenCV。 我想檢測人臉並計算圖像中有多少人,然后打印出圖像中的人數。

import numpy
import scipy
from scipy import ndimage

im = scipy.misc.imread('test5.jpg')
im = im.astype('int32')
dx = ndimage.sobel(im, 0)  # horizontal derivative
dy = ndimage.sobel(im, 1)  # vertical derivative
mag = numpy.hypot(dx, dy)  # magnitude
mag *= 255.0 / numpy.max(mag)  # normalize (Q&D)
scipy.misc.imsave('sobel.jpg', mag)

上面的代碼不是我的,我是從網上得到的。

我也在其他論壇上問過這個問題。 這里

您想要做的是使用 scipy、numpy 和 sklearn 可行。

首先你要收集很多人臉的數據,然后是很多不是人臉的隨機數據。

假設您有 2000 張人臉圖像和 10000 張非人臉圖像。 然后您需要將它們全部加載,標准化它們的大小和強度,然后將它們傳遞給 SVM 進行分類。 人臉照片的標簽應該是1,非人臉的標簽應該是0。

images = [image1, image2, image3... imagen]
labels = [0 1 1 ... 0]

當你在上面構建了這個之后,你需要將它傳遞給一個 svm:

faceclassifier = SVC()
faceclassifier.fit(images, labels) 

在此處查看更多信息http://scikit-learn.org/dev/modules/generated/sklearn.svm.SVC.html

然后在每個新查詢圖像中獲取所有帶有滑動窗口的塊,並將每個塊通過 SVM。

如果 SVM 結果很高,則將其分類為代表人臉的塊,否則就不是人臉。

通常,您無法使用圖像處理技術構建准確的人臉檢測器,您應該使用計算機視覺和機器學習。

那么你應該研究 Viola Jones 算法。 opencv 庫本身有一個很好的實現。 這是用於檢測圖像中人臉的最佳算法之一。 盡管當您傾向於構建深度架構時,會有更好的算法。

我同意 entropiece 發布。 使用計算機視覺和機器學習是解決此類問題的常用方法。

但是,如果您仍想為此嘗試使用圓檢測,您可能需要研究圓霍夫變換。 編寫代碼相當簡單,如果您不想使用任何其他庫,甚至可以從頭開始。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM