您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 捕获图像进行处理

5b51 2022/1/14 8:23:14 python 字数 5521 阅读 584 来源 www.jb51.cc/python

我正在使用 Python与PIL和SciPy. 我想从网络摄像头捕获图像,然后使用numpy和Scipy进一步处理它.有人可以帮我解决问题. 这里的代码有一个预定义的图像“lena”,但我希望使用我自己捕获的图像而不是“lena”图像.我对代码做了哪些更改? from scipy import misc lena = misc.lena() lx, ly = lena.shape import m

概述

这里的代码一个预定义的图像“lena”,但我希望使用我自己捕获的图像而不是“lena”图像.我对代码做了哪些更改?

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()

我已经使用了很多Video Capture by Markus Gritsch,这可能是你想做的最简单,最快捷的方式.

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绑定来完成它.至少有两种方法可以做到这一点.我发现thisthis教程很有趣.

Video Capture

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图像),所以要在shell中显示图像类型:

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

你可以像上面那样显示它.

总结

以上是编程之家为你收集整理的python – 捕获图像进行处理全部内容,希望文章能够帮你解决python – 捕获图像进行处理所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶