我试图上传图像到s3后,检测到一张脸使用opencv。jpg文件被上传到s3,但我无法打开图像。
我可以先将图像保存到本地磁盘,然后再上传到s3,但我想在检测到人脸后直接上传,你知道怎么做吗?
# import the necessary packages
# capture frames from the camera
for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):
# grab the raw NumPy array representing the image, then initialize the timestamp
# and occupied/unoccupied text
image = frame.array
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(
gray,
scaleFactor=1.1,
minNeighbors=5,
minSize=(30, 30),
flags=cv2.CASCADE_SCALE_IMAGE
)
# Draw a rectangle around the faces
for (x, y, w, h) in faces:
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)
# cv2.imwrite('newobama.png', image)
if len(faces):
imageName = str(time.strftime("%Y_%m_%d_%H_%M")) + '.jpg'
#This is not working
s3.put_object(Bucket="surveillance-cam", Key = imageName, Body = bytes(image), ContentType= 'image/jpeg')
# show the frame
cv2.imshow("Frame", image)
key = cv2.waitKey(1) & 0xFF
# clear the stream in preparation for the next frame
rawCapture.truncate(0)
# if the `q` key was pressed, break from the loop
if key == ord("q"):
break
5条答案
按热度按时间igsr9ssn1#
替换此行:
作者
应该会有用的。
g52tjvyc2#
我相信
image
对象不是JPEG编码的二进制表示形式,而是用于数学目的的NumPy对象您应该检查Python OpenCV convert image to byte string?和
将图像编码到内存缓冲区中。生成S3可以获取的对象
oxf4rvwz3#
管道安装枕
这段代码对我来说是有效的,但是它给上传的图像带来了一点蓝色阴影,所以我决定先将图像保存到本地磁盘,然后再上传到S3
0ejtzxu14#
mm5n2pyu5#