New to python and also using stack overflow so please bear with me, I’m just trying to get used to it.
Right, so I have 5 image frames. I wish to extract the pixel values from these frames in the time domain. Therefore I need to store the values in a new matrix with no_of_frames as my rows (time domain ) and pixel instance ( 9 * 9 image so 81 instances ) as my columns.
I can do that as shown below ( I know the code is awful, bear with me) but when it comes to storing the pixel values for the next row I run into an issue as I have used the while loop up to 400 columns.I want to continue to store my values as I did for the first row.
cap = cv2.VideoCapture(0)
cv_img = []
while(True):
ret, frame1 = cap.read()
time.sleep(1/25)
ret, frame2 = cap.read()
time.sleep(1/25)
ret, frame3 = cap.read()
time.sleep(1/25)
ret, frame4 = cap.read()
time.sleep(1/25)
ret, frame5 = cap.read()
if cv2.waitKey(1000) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
### Region of Interest ###
frame_slice1 = frame1[300:400,400:800]
frame_slice2 = frame2[300:400,400:800]
frame_slice3 = frame3[300:400,400:800]
frame_slice4 = frame4[300:400,400:800]
frame_slice5 = frame5[300:400,400:800]
### Converting the ROI into Grayscale ###
gray1 = cv2.cvtColor(frame_slice1, cv2.COLOR_BGR2GRAY)
cv_img.append(gray1)
gray2 = cv2.cvtColor(frame_slice2, cv2.COLOR_BGR2GRAY)
cv_img.append(gray2)
gray3 = cv2.cvtColor(frame_slice3, cv2.COLOR_BGR2GRAY)
cv_img.append(gray3)
gray4 = cv2.cvtColor(frame_slice4, cv2.COLOR_BGR2GRAY)
cv_img.append(gray4)
gray5 = cv2.cvtColor(frame_slice5, cv2.COLOR_BGR2GRAY)
cv_img.append(gray5)
column = 0;
pixels_clear = np.ones((5,1)) #no_of_frames, one column 5,1
pixels = np.ones((5,40000)) #no_of_frames, no of pixel elements 5,40000
for rows in range(0,100):
while column < 400:
j=0
pixels_clear[j,0] = gray1[rows,column]
j = j+1
pixels_clear[j,0] = gray2[rows,column]
j = j+1
pixels_clear[j,0] = gray3[rows,column]
j = j+1
pixels_clear[j,0] = gray4[rows,column]
j = j+1
pixels_clear[j,0] = gray5[rows,column]
pixels[:,column:column+1] = pixels_clear
column = column + 1
Any and all tips and suggestions are welcome. If I havent been clear (which I’m sure I have messed up on), let me know and I will try rephrase.
Thank you, P
Advertisement
Answer
import numpy as np
import cv2
import glob
### Reading in all of the chessboard files ###
cv_img = []
for img in glob.glob("/Python/OpenCv/Images/chessboard/*.jpg"):
n = cv.imread(img)
cv_img.append(n)
list1 = np.empty((len(cv_img),100,100), dtype=np.uint8)
i = 0
for img in cv_img:
img = img[100:200,100:200]
new_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
list1[i] = new_img
i = i+1
img = img + 1
column = 0;
pixels_clear = np.ones((1,13)) #no_of_frames, one column 5,1
pixels = np.ones((1,13))
for rows in range(0,100):
column=0
while column < 100:
n_frame = 0
for n_frame in range(0,13):
pixels_clear[0,n_frame] =list1[n_frame,rows,column]
n_frames = n_frames + 1
column = column + 1
pixels = np.vstack([pixels,pixels_clear])