如何在Python中获取简单的数据输出并将其导出到Excel(或记事本)中?

时间:2019-06-18 00:59:18

标签: python excel opencv

我正在从事一个涉及Python的项目。我从未将它与OpenCV一起使用。目的是拍摄视频的16x16部分,我正在用一个图像进行练习,并获得其RBG值。我想在视频中将其运行数千帧,但我不知道如何循环播放。例如,一旦有了它([71 155 90]),我想将其保存到记事本,Excel工作表中,或者通过一些简单的方法或引用我的结果。

我尝试查找有关如何导出值的教程,但是它们使用了很多不同的术语,我不知道从哪里开始。

import numpy as np
import cv2

img = cv2.imread('dog.jpg', cv2.IMREAD_COLOR)

px = img[16,16]

print(px)

我唯一得到的是终端中的RBG输出[71 155 90]。我不知道从那里去哪里。我不知道如何导出值。

3 个答案:

答案 0 :(得分:0)

您可以使用openpyxl

import numpy as np import cv2
img = cv2.imread('dog.jpg', cv2.IMREAD_COLOR)
px = img[16,16]

import pandas as px
df = pd.DataFrame(px)
df.to_excel('filename.xlsx')

答案 1 :(得分:0)

您需要打开一个文件,然后将结果写入该文件,这是执行此操作的一种可能方法(尽管可能不是最佳选择):

 fp = open('output.csv', 'w')
 fp.write('{},{},{}'.format(px[0],px[1],px[2])
 # write more values here
 fp.close()  # do this at the end of your writes

答案 2 :(得分:0)

我目前正在处理类似的东西,而不是视频,而是在处理图像,所以我四处寻找有关如何从文件夹批量导出图像/帧并将数据保存到numpy数组的教程。 这是我的代码的一个示例*不确定内部有多少错误,但是它能够加载图像帧并将其保存到数组中。我使用tqdm显示一个简单的进度栏,因此我在调用此函数时知道图像加载的状态。

def img_readph(path):
readph =[i for i in listdir(path) if isfile(join(path,i))]
img = np.empty(len(readph), dtype=object)
for j in tqdm(range(0, len(readph))):
    img[j] = cv2.imread(join(path,readph[j]))
return img

为了加载和处理当前保存在numpy数组堆栈中的图像,我使用这组代码进行提取,执行基本的psnr计算并将数据保存到.txt(了解如何将结果转换为.csv,我也可以在python中加载/保存/追加以供将来进行编辑)。

for index in tqdm(range(len(img))):
        (psnr, meanerror) = calculate_psnr(imgGT[index], imgSR[index])
        print('Image No.{} has average mean square error of {} and the average PSNR is {}'.format(index,meanerror,psnr))

通过这种方式,我可以循环播放上一个numpy数组中的每个视频帧,以执行计算psnr的操作。

您所能做的就是尝试编写代码,使用来将RGB值转换为函数,

txtfilename = input("enter filename: ")
with open(str(txtfilename)+".txt","w") as results:
    for index in tqdm(range(0, len(img)))    #the array from imread
    img = cv2.imread('img', cv2.IMREAD_COLOR)
    px = img[width, height]
    print("The RBG values are {}".format(px), file=results)

与此类似的事情,希望对您有所帮助。