批量讀取圖片儲存為csv檔案
- 工具
採取QT5.6.1+opencv2.4.9
本文以實現將手寫數字圖片轉化為csv檔案列子
- 實現思路:
-1.將手寫數字以分類在不同資料夾中(0-9)如下圖所示:
-2.將所有圖片的路徑載入到txt檔案中dir /b/s *.png > image.txt;生成的txt檔案如下圖:
-3.創立QFile csvFile(FILE_PATH),FILE_PATH為最終生產的csv檔案的路徑位置;
開啟:csvFile.open(QIODevice::ReadWrite)
這裡需要用ifstream進行檔案流讀取
ifstream getNamelist(picTXTtoute) ;//picTXTtoute:為image.txt的位置(string)
while(getline(getNamelist,ImgName));//讀入txt的一行到ImgName,從而獲取了第一幅圖片的路徑,反覆讀取,則實現了對圖片的批量處理。
-4我們以每類圖片所在資料夾的名字作為其標籤(label),為了使生產的csv檔案為(標籤+畫素值 畫素值 畫素值….)的結構我們現在需要獲取每個ImgName的第56位字元,即(0-9),我們可以用以下句法實現
QString Dirroute =QString::fromStdString(ImgName);//為了得到標籤(所以對與資料夾和圖片的命名要有規律)
QString Midroute = Dirroute.mid(56,1);//標籤位置
Midroute.append(",");//為轉換為csv檔案加“,”只要不是圖片的最後一個畫素那都是(畫素值,)結構,最後一個畫素那就是(畫素值\n)結構;
注意在將(畫素值,)(畫素值\n)寫入csvFile中的時候,我們需要Midroute轉換為哦ascii碼,在QT中用下面的語句實現
csvFile.write(Midroute.toLatin1());//這個是QFile::write()型別必須的,QString轉換為ascii的句法。
至此我們已經將第一幅圖片的標籤寫入了csv檔案中,如下圖綠色框選的位置
-5我們在進行圖片畫素的寫入之前,我們需要知道幾個小知識點,第一:我們的圖片是三通道的,即一個畫素點需要用三個畫素值表示,在我們得到圖片的rows和cols的之後,我們要將其儲存的1*N的矩陣中,這個N不是rows*cols 而是rows*cols*3;
第二:本文用at去訪問畫素點,所以我們要提前知道Mat的資料型別,這裡我們的圖片Mat型別是uchar,uchar c = image.at(i,j);第二:用at訪問的時候,image.at(i,j)實際訪問的是(j,i)畫素點的值;第三:為了在讀取後的畫素值後面加上“,”或者“\n”我們需要用到下面的知識點:
QString i = "iTest"; // current file's number
QString total = "totalTest"; // number of files to process
QString fileName = "fileNameTest"; // current file's name
QString status = QString("Processing file %1 of %2: %3")
.arg(i).arg(total).arg(fileName);
記住最後QString要抓還為ascii才能寫入csv;
-6最後,要用csvFile.close();結束csv檔案操作
下面上程式碼:
.cpp
void ImagePreprocessing::writeImageToCSV(string picTXTtoute)
{
QString str;
QFile csvFile(FILE_PATH);//建立QFile物件 csvFile,File_PATH為csvFile檔案儲存的路徑及型別
Mat inputImage;//接受從txt檔案讀入路徑的圖片
string ImgName; //接受從txt檔案中讀入圖片的路徑
int rows,cols;
ifstream getNamelist(picTXTtoute);//讀取儲存了圖片路徑和格式的txt文件
if(csvFile.open(QIODevice::ReadWrite))//開啟檔案,進行操作
{
while(getline(getNamelist,ImgName))//讀入一行,\n為結束符
{
QString Dirroute =QString::fromStdString(ImgName);//為了得到標籤(所以對與資料夾和圖片的命名要有規律)
QString Midroute = Dirroute.mid(56,1);//標籤位置
Midroute.append(",");//為轉換為csv檔案加“,”
csvFile.write(Midroute.toLatin1());//這個是QFile::write()型別必須的,QString轉換為ascii的句法。寫在沒個圖片的前面,作為標籤號
// qDebug() << Midroute;
// cout<< ImgName <<endl; //路徑輸出
inputImage = imread(ImgName);
if(!inputImage.data)//異常退出
return;
rows = inputImage.rows;
cols = inputImage.cols;
int flagNum = rows * cols * 3;
int countNum = 0;
// cout << flagNum << endl;
for(int i = 0; i <rows; i++)//把衣服圖片轉換為N*1的矩陣。
{
for(int j = 0; j< cols * 3; j++)
{
countNum++;
uchar c = inputImage.at<uchar>(i,j);//用at操作,事前就要知道Mat中資料儲存型別,uchar,flaot,或者其他。
if(countNum == flagNum)
{
str = QString("%1\n").arg(c);//最後一個畫素,在後面新增\n作為行結束符號
// qDebug() << str;
}
else
str = QString("%1,").arg(c);//非最後一個畫素值,則用逗號,隔開資料。
csvFile.write(str.toLatin1());//csvFile。write()遇到\n則會換行進行寫,遇到的是“,”則繼續在逗號後面寫入資料
// qDebug() << str;
}
}
}
}
csvFile.close();//寫完以後記住要關閉csv檔案,正常結束
return;
}
相關推薦
批量讀取圖片儲存為csv檔案
工具 採取QT5.6.1+opencv2.4.9 本文以實現將手寫數字圖片轉化為csv檔案列子 實現思路: -1.將手寫數字以分類在不同資料夾中(0-9)如下圖所示: -2.將所有圖片的路徑載入到txt檔案中dir /b/s *.png >
批量的圖片儲存為mat檔案 -- MATLAB
matlab實現批量圖片向mat轉換,對應大量資料集圖片處理異常重要 clc; clear all; num = 1000; %圖片數量 for i = 1 : num IMAGE = imread(sprintf('G:\\TEST\\%.jpg'
爬蟲資料儲存為csv檔案時,表格中間隔有空行問題
問題描述:將爬取的資料儲存的csv檔案,遇到幾個問題,原始碼如下: with open('F:\\Pythontest1\\douban.csv','w') as f: writer = csv.writer(f,dialect='excel') writer.writero
C#將資料儲存為CSV檔案格式
/// 將資料以CSV格式儲存 /// ",表示移動到同一行的下一格" /// "\r\n"表示移動到下一列 /// </summary> /// <param name="sender"></pa
幾行Python程式碼生成飯店營業額模擬資料並儲存為CSV檔案
CSV檔案是一種通用的、簡單的檔案格式,以純文字形式儲存表格資料(數字和文字),在多個領域都有廣泛應用,經常用來在不同程式之間交換資料。 下面的程式碼使用Python標準庫datetime和random生成資料模擬一個飯店的銷量,然後使用標準庫csv寫入CSV檔案。可以調整程式中的數字,生成更多符合要求的資
python 怎樣把一個數組型別資料儲存為csv檔案
有時候做完一個案例的分析,模型做好了,最後想把預測的結果儲存為CSV檔案。這個預測的結果一般是n行1列的一個數列,我們最後就是想把預測結果儲存下來。submission = clf.predict(credit_test)#submission是我的預測結果,是一個5000*
scrapy爬蟲儲存為csv檔案的技術分析
由於工作需要,將爬蟲的檔案要儲存為csv,以前只是儲存為json,但是目前網上很多方法都行不通,主要有一下兩種: from scrapy import signals from scrapy.contrib.exporter import CsvItemExporter
MATLAB中批量從txt檔案中讀取指定行的資料儲存為txt檔案
經常遇到,我們想要讀取的資料,不是從頭開始讀取的,我們往往要求從固定的行開始讀取,MATLAB程式碼如下: function readData() %從指定行開始讀取資料 readFilePat
tensorflow將圖片儲存為tfrecord和tfrecord的讀取
tensorflow官方提供了3種方法來讀取資料: 預載入資料(preloaded data):在TensorFlow圖中定義常量或變數來儲存所有的資料,適用於資料量不太大的情況。 填充資料(feeding):通過Python產生資料,然後再把資料填充到後端。 從檔案讀取資
opencv+vs2017實現視訊的讀取及播放,同時將每一幀圖片儲存在指定檔案
#include "highgui.h" #include <iostream> using namespace std; int main(int argc, char** argv) { cvNamedWindow("視訊播放器", CV_WINDOW_A
nrrd格式用Python讀取並儲存為png圖片
安裝pynrrd pip install pynrrd pip install git+https://github.com/mhe/pynrrd.git cd pynrrd pip install . 如果報錯了,則輸入 python setup.py install 注意:
python儲存身份證號碼為csv檔案顯示問題解決
用python處理含身份證號碼的文字檔案,將其另外儲存為csv檔案,該csv檔案使用wps開啟顯示身份證號碼後面三位數變為0,解決的辦法是:身份證號碼前加'\t',例如下面程式碼: origine_file = r"C:\Files\名單.txt" save_to = "C:\Fil
Python - pyecharts:直接將圖片儲存為 png, pdf, gif 格式的檔案
關鍵:使用 pyecharts-snapshot外掛 第一步:安裝node.js 第二步:安裝phantomjs 命令列中輸入: npm install -g phantomjs-prebuilt 安裝完成後檢查是否成功,命令列輸入: phantomjs 第三
php wangeditor編輯器,base64圖片儲存為檔案
php 字串圖片轉為檔案儲存 /** * 編輯器base64_decode圖片匹配 * * @author Eric * @param $str
opencv中批量讀取圖片並儲存
在生成訓練集的時通常需要對資料夾中圖片進行批處理,本文簡要介紹影象批量讀取、處理、儲存的方法。 方法一: 1.生成圖片描述檔案 對於有多幅影象的資料夾,首先生成txt檔案,儲存圖片路徑。 在DOS模式下匯入資料夾路徑並生成TXT檔案: 2.通過TXT批
oracle ebs + PL/SQL實現將查詢出來的資料儲存為csv格式檔案,並定期上傳到FTP伺服器學習總結
目的 oracle ebs + PL/SQL實現將查詢出來的資料儲存為csv格式檔案,並定期上傳到FTP伺服器。 用到oracle utl_file包,FTP檔案上傳 第一次接觸這種型別的任務,也是在網上查詢了很多參考資料才弄出來。 下面是具體的例子。
=讀取日誌檔案,正則表示式匹配出有用資訊,並且儲存到csv檔案。
//版本1 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.
單個爬蟲檔案使用scrapy儲存為csv格式
import scrapy class StackOverflowSpider(scrapy.Spider): name = "stackoverflow" start_urls=["http://stackoverflow.com/questions?sort=vo
運用python將json檔案儲存成csv檔案
工具: spyder ,codecs ,pandas # -*- coding: utf-8 -*- """ Spyder Editor This is a temporary script file. """ #-*-coding:utf-8-*- import j
linux終端儲存為文字檔案
1. 只儲存一個命令的結果時候 ls>ls.txt 會覆蓋檔案原有內容 ls>>ls.txt 會新增到檔案末尾 2. tee 命令 ls | tee ls.txt 會覆蓋檔案原有內容 ls | tee -a ls.txt 會新增到檔案末尾