我有以下代码:
# Import packages
from picamera.array import PiRGBArray
from picamera import PiCamera
import time
import cv2
X_RESOLUTION = 640
Y_RESOLUTION = 480
# Initialize the camera and grab a reference to the raw camera capture
camera = PiCamera()
camera.resolution = (X_RESOLUTION, Y_RESOLUTION)
camera.framerate = 10
rawCapture = PiRGBArray(camera, size = (X_RESOLUTION, Y_RESOLUTION))
# Allow camera to warmup
time.sleep(0.1)
#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
image = frame.array
# Show the frame
cv2.imshow("Frame", image)
key = cv2.waitKey(1) & 0xFF
# Clear the stream so it is ready to receive the next frame
rawCapture.truncate(0)
# If the 'q' key was pressed, break from the loop
if(key == ord('q')):
break
一切都很好,花花公子。它会捕获视频并将其显示在我的屏幕上,当我按下“q”时它会退出。但是,如果我想以某种方式操纵帧,例如我想将每帧中的每个像素R值设置为255以使图像变为红色。我该怎么做?
我的最终目标是编写检测静态背景移动的软件。我理解为实现这一目标需要完成的理论和实际数据操作,我只是想弄清楚如何访问每个帧的像素数据并对其进行操作。我试图更改' image'中的某些值,但它表示数组是不可变的,无法写入,只能从中读取。
感谢您的时间。
答案 0 :(得分:0)
我已经随机访问了每个像素{R,G,B值单独访问}值并更改了图像中的值。您可以通过提取视频的每一帧来对视频执行此操作。它是用c ++实现的opencv。通过此链接https://stackoverflow.com/a/32664968/3853072,您将获得一个想法。