簡體   English   中英

來自URL圖像的opencv python面部檢測

[英]opencv python face detection from url images

我可以使用基於haar功能的級聯對已保存圖像進行opencv人臉檢測沒有問題:

from PIL import Image
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')

img = cv2.imread('pic.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

faces = face_cascade.detectMultiScale(gray, 1.3, 5)

但我不知道如何打開url圖片並將其傳遞給face_cascade。 我一直在玩cStringIO,但是我不知道該怎么辦...

import cv2.cv as cv
import urllib, cStringIO
img = 'http://scontent-b.cdninstagram.com/hphotos-prn/t51.2885-15/10424498_582114441904402_1105042543_n.png'
file = cStringIO.StringIO(urllib.urlopen(img).read())
source = Image.open(file).convert("RGB")
bitmap = cv.CreateImageHeader(source.size, cv.IPL_DEPTH_8U, 3)
cv.SetData(bitmap, source.tostring())
cv.CvtColor(bitmap, bitmap, cv.CV_RGB2BGR)

可以使用numpy數組代替嗎?

source2 = Image.open(file)
imarr=numpy.array(source2,dtype=numpy.uint8)

我是一個初學者,因此對解釋不佳表示歉意。 提前非常感謝!

或者,您可以使用VideoCapture()類打開URL圖像。

請參閱下面的C ++代碼,

VideoCapture cap;

if(!cap.open("http://docs.opencv.org/trunk/_downloads/opencv-logo.png")){
cout<<"Cannot open image"<<endl;
return -1;
}
Mat src;
cap>>src;
imshow("src",src);
waitKey();

在第一個示例中,您將使用OpenCV2.imread在第二個OpenCV2.imread中讀取圖像,大概是在使用PIL.Image然后嘗試進行轉換。

為什么不簡單地將文件保存到臨時目錄,然后再次使用OpenCV2.imread

暫無
暫無

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

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