我已经建立了一个对象检测模型来检测视频帧中的一些对象。它可以正常工作,但是我无法将输出数据写入到csv文件中
我已经编写了用于对象检测的代码,并将检测的一些输出参数写入csv文件。
from __future__ import division
import os
import cv2
import numpy as np
import sys
import pickle
from optparse import OptionParser
import time
from keras_frcnn import config
from keras import backend as K
from keras.layers import Input
from keras.models import Model
from keras_frcnn import roi_helpers
import pandas
import keras_frcnn.resnet as nn
import tensorflow as tf
import datetime
import csv
from glob import glob
all_dets = []
for key in bboxes:
bbox = np.array(bboxes[key])
new_boxes, new_probs = roi_helpers.non_max_suppression_fast(bbox, np.array(probs[key]), overlap_thresh=0.5)
for jk in range(new_boxes.shape[0]):
(x1, y1, x2, y2) = new_boxes[jk, :]
(real_x1, real_y1, real_x2, real_y2) = get_real_coordinates(ratio, x1, y1, x2, y2)
# Here I created a list of 4 entries that contains the real coordinates
img_name_list.append(img_name)
x1_list.append(real_x1)
x2_list.append(real_x2)
y1_list.append(real_y1)
y2_list.append(real_y2)
cv2.rectangle(image, (real_x1, real_y1), (real_x2, real_y2),
(int(class_to_color[key][0]), int(class_to_color[key][1]), int(class_to_color[key][2])), 2)
textLabel = '{}: {}'.format(key, int(100 * new_probs[jk]))
all_dets.append((img_name,key, 100 * new_probs[jk]))
(retval, baseLine) = cv2.getTextSize(textLabel, cv2.FONT_HERSHEY_COMPLEX, fontScale=1, thickness=1)
textOrg = (real_x1, real_y1 - 0)
cv2.rectangle(image, (textOrg[0] - 5, textOrg[1] + baseLine - 5),
(textOrg[0] + retval[0] + 5, textOrg[1] - retval[1] - 5), (0, 0, 0), 2)
cv2.rectangle(image, (textOrg[0] - 5, textOrg[1] + baseLine - 5),
(textOrg[0] + retval[0] + 5, textOrg[1] - retval[1] - 5), (255, 255, 255), -1)
cv2.putText(image, textLabel, textOrg, cv2.FONT_HERSHEY_DUPLEX, fontScale=1, color=(0, 0, 0), thickness=1)
print(all_dets)
######### DATA of ALL_DETS[] to be written to METADATA.CSV###########
df1 = pandas.DataFrame(all_dets, columns=['Filename', 'Detected Object', 'Probability'])
# df1=pandas.DataFrame(data={"Filename":img_name,"Detected Object":key,"Probability":int(100 * new_probs[jk])})
df1.to_csv(out + "/metadata.csv", sep=',', index=False)
######### CO-ORDINATE DATA TO BE WRITTEN TO ANOTHER CSV##############
df = pandas.DataFrame(data={"img_name": img_name, "x1": x1_list, "y1": y1_list, "x2": x2_list, "y2": y2_list})
df.to_csv(out + "/bounding_box_coordinates_ans.csv", sep=',', index=False)
cv2.imwrite(out + "/{}.jpg".format(img_name), image)
if __name__ == '__main__':
x = "C:\\Python36\\videos\\*.mp4"
extractFrames(x)
我希望将变量df1的输出写入metadata.csv ,该输出应具有当前图像的名称,检测到的对象的名称及其检测百分比,但是每次都为空白 。
我还希望将一些数据从变量df写入bounding_box_coordinates_ans csv文件。 该文件存储了检测到的对象的坐标值,但是同一图像帧的坐标值一次又一次地重复,我觉得这是一些循环缩进。 我无法解决过去许多天的问题,我需要将输出保存在这些文件中。