6

PIL と SciPy で Python を使用しています。ウェブカメラから画像をキャプチャし、numpy と Scipy を使用してさらに処理したいと考えています。誰かがコードを手伝ってくれませんか。

定義済みの画像「レナ」があるコードは次のとおりですが、「レナ」画像の代わりに独自のキャプチャ画像を使用したいと考えています。コードにどのような変更を加えますか?

from scipy import misc
lena = misc.lena()
lx, ly = lena.shape
import matplotlib.pyplot as plt
crop_lena = lena[lx / 4: - lx / 4, ly / 4: - ly / 4]
plt.imshow(crop_lena)

もう一つの例

import scipy
from scipy import ndimage
import matplotlib.pyplot as plt
import numpy as np
l = scipy.misc.lena()
plt.figure(figsize=(10, 3.6))
plt.subplot(131)
plt.imshow(l, cmap=plt.cm.gray)
plt.show()
4

2 に答える 2

6

Markus Gritschによるビデオキャプチャ

私はMarkus Gritschによる Video Capture をたくさん使用してきましたが、これはおそらくあなたが望むことを行うための最も簡単で最速の方法です。

from VideoCapture import Device
from numpy import *
from PIL import Image
cam = Device(devnum=0, showVideoWindow=0) #devnum=0 means you are using the device set in 0 position probably your webcam
blackimg= cam.getImage() #this return a PIL image but I don't know why the first is always black
#blackimag.show()#try to check if you want
image=cam.getImage() #this is a real image PIL image
imgarray = asarray(image) #convert the image into a matrix
#imgarrayfloat = imgarray.astype('float') # in many cases of processing you have to convert to a float matrix because can occur overflow (e.g. for average images summing  pixels values of 255 and 3 of two images and divide by 2 gives you 1/2 for imgarray and 258/2 for imgarrayfloat 
#recovertedimage=processedimage.astype ("uint8")#if you use the previous you have to reconvert to unit8. Note processedimage is the name of the variable of your image.

Python OpenCV: cv2 & cv

OpenCVの Python バインディングでも実行できます。そのためには、少なくとも 2 つの方法があります。これとこのチュートリアルは興味深いものでした

ビデオキャプチャ

from cv2 import *
cam = VideoCapture(0)  #set the port of the camera as before
retval, image = cam.read() #return a True bolean and and the image if all go right
cam.release() #Closes video file or capturing device.

この場合、numpy.ndarray(PIL イメージはもうありません) があるので、シェルでイメージ タイプを表示します。

import matplotlib.pyplot as plt
plt.imshow(image)

CaptureFromCAM の古い方法

import cv2.cv as cv 
import numpy as np  
Capture = cv.CaptureFromCAM(0)
image = cv.QueryFrame(Capture) #here you have an IplImage
imgarray = np.asarray(image[:,:]) #this is the way I use to convert it to numpy array

上記のように表示できます。

于 2013-09-25T11:20:11.863 に答える
4

VideoCapture lib を使用して、USB カメラから画像を取得できます。

from VideoCapture import Device

came = Device()
came.setResolution(320, 240)

img = cam.getImage()
...
于 2013-09-25T04:26:44.900 に答える