2016-12-09 68 views
0
def little_boxes(new_frame, y_pos, box_size): 
""" Arrange boxes across new frame and return a list of boolean values represting if a line is present in each box""" 
    if not isinstance(new_frame, numpy.ndarray): 
     raise ValueError("A valid numpy array must be passed in") 
    width, height = new_frame.shape[:2] # height, width -> y, x 
    num_boxes = height/box_size[0] 
    box_list = [] 
    for box_index in range(num_boxes): 
     # Check for laser in each box 
     box_x1 = box_index * box_size[1] 
     box_x2 = (box_index + 1) * box_size[1] 
     box_y = y_pos 
     cropped_image = new_frame[box_y: box_y + box_size[1], box_x1: box_x2] 
     box_list.append(laser_check(cropped_image)) 
    print(box_list) 

    with open("output.csv","wb") as f: 
     writer = csv.writer(f) 
     writer.writerow((box_list)) 
    print ('output.csv') 
    f.close() 

以上是我用來從網絡攝像頭採集數據,然後將數據存儲到excel文件中的代碼的一部分。但它只是保存最後一行。例如,如果我得到這個列表:CSV寫入器問題

[1,0,0,0] 

[0,1,1,1] 

[0,0,1,1] 

保存在Excel文件中的唯一的事情將是[0,0,1,1]

關於如何解決此問題的任何想法?我也希望能夠爲每一行添加時間戳。

+0

請告訴我'box_list'? – Fernando

+0

@Fernando我更新了問題 –

+0

如果'laser_check'返回一個普通列表,那麼我的答案是有效的。 – Fernando

回答

0

假設box_list被列出的清單:

import csv 
box_list = [[1,0,0,0], [0,1,1,1], [0,0,1,1]] 

with open("output.csv","wb") as f: 
    writer = csv.writer(f) 
    for row in box_list: 
     writer.writerow(row) 
# no need to close f 
+0

或'writer.writerows(box_list)' –

+0

謝謝,我正試圖記住這一個! – Fernando