4 回答

TA贡献1785条经验 获得超8个赞
这是从网络摄像头捕获图像的示例。这是更新的、面向对象的、整合的 OpenCV 2 Python API。
import cv2
# Camera 0 is your port number
camera_port = 0
#Number of frames to throw away while the camera adjusts to light levels
ramp_frames = 30
# Initialize cam with port
camera = cv2.VideoCapture(camera_port)
# Captures a single image & returns in PIL format
def get_image():
# read full image out of a VideoCapture object.
retval, im = camera.read()
return im
# Ramp the camera - these frames will be discarded and are only used to allow v4l2
for i in xrange(ramp_frames):
temp = get_image()
print("Taking image...")
# Take the actual image we want to keep
camera_capture = get_image()
file = "/home/codeplasma/test_image.png"
# correct format based on the file extension you provide. Convenient!
cv2.imwrite(file, camera_capture)
# capture object until your script exits
del(camera)

TA贡献1820条经验 获得超9个赞
也许,您应该阅读官方文档。你试试这段代码。祝你好运!
import cv2
cap = cv2.VideoCapture(0)
while(True):
# Capture frame-by-frame
ret, frame = cap.read()
# Display the resulting frame
cv2.imshow('frame',frame)
cv2.imread('./your-dir/image.png', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

TA贡献1830条经验 获得超3个赞
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(True):
# Capture frame-by-frame
ret, frame = cap.read()
# Our operations on the frame come here
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Display the resulting frame
cv2.imshow('frame',gray)
#this line save your image into Dir
cv2.imwrite("you dir path eg. C:\", img)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

TA贡献1890条经验 获得超9个赞
首先尝试像管理员一样运行 python 的 shell/console 来执行脚本:这段代码应该运行良好:
import cv2 #to take photos or pre-process it with some computer vision technique
import os #to save images at any path i.g E:/myfolder/images/
import argparse #to receive parameters in the console
#Open the camera:
cam = cv2.VideoCapture(0)
ap = argparse.ArgumentParser()
ap.add_argument("-c", "--quantity", required=True, help="Set the quantity of images that you want to take p. ej. 350")
args = vars(ap.parse_args())
#set path where we are going to save the image.
outDirectory = "E:/alxor/"
def takePhoto(number):
if cam.isOpened():
print("Camera opened successfully!")
#Get one image:
ret, frame = cam.read()
name = "image_"+str(number)+".jpg"
print(name)
cv2.imwrite(os.path.join(outDirectory, name), frame)
else:
print("[INFO] Can not open the camera :(")
c = int(args["quantity"])
j = 1
while j <= c: #introduciendo 's' salimos del bucle
print ("[INFO] WRITE 's' TO EXIT: ")
print ("[INFO] WRITE 'c' TO TAKE A PHOTO ")
user_input = input() #leer entrada
if user_input is 'c':
takePhoto(j)
print("[INFO] IMAGE #"+str(j)+" SAVED...")
if user_input is 's':
break
print("[INFO] THE PROGRAM HAS FINISHED..")
j+=1
#Turn off the camera..
cam.release()
print("[INFO] THE PROGRAM HAS FINISHED..")
更新 1. 使用 os 库将图像保存在所需路径中。更新 2. 拍摄 n 张图像的选项我也在 github 中留下了这段代码: 代码
- 4 回答
- 0 关注
- 159 浏览
添加回答
举报