一、Mat類(lèi)型:矩陣類(lèi)型,Matrix。在openCV中,Mat是一個(gè)多維的密集數(shù)據(jù)數(shù)組??梢杂脕?lái)處理向量和矩陣、圖像、直方圖等等常見(jiàn)的多維數(shù)據(jù)。Mat有3個(gè)重要的方法:1、Matmat=imread(constString*filename);讀取圖像2、imshow(conststringframeName,InputArraymat);顯示圖像3、imwrite(conststringfilename,InputArrayimg);儲(chǔ)存圖像Mat類(lèi)型較CvMat與IplImage類(lèi)型來(lái)說(shuō),有更強(qiáng)的矩陣運(yùn)算能力,支持常見(jiàn)的矩陣運(yùn)算。在計(jì)算密集型的應(yīng)用當(dāng)中,將CvMat與IplImage類(lèi)型轉(zhuǎn)化為Mat類(lèi)型將大大減少計(jì)算時(shí)間花費(fèi)。A.Mat-IplImage同樣只是創(chuàng)建圖像頭,而沒(méi)有復(fù)制數(shù)據(jù)。例://假設(shè)Mat類(lèi)型的imgMat圖像數(shù)據(jù)存在IplImagepImg=IplImage(imgMat);B.Mat-CvMat與IplImage的轉(zhuǎn)換類(lèi)似,不復(fù)制數(shù)據(jù),只創(chuàng)建矩陣頭。例://假設(shè)Mat類(lèi)型的imgMat圖像數(shù)據(jù)存在CvMatcvMat=imgMat;二、CvMat類(lèi)型與IplImage類(lèi)型:“圖像”類(lèi)型在openCV中,Mat類(lèi)型與CvMat和IplImage類(lèi)型都可以代表和顯示圖像,但是,Mat類(lèi)型側(cè)重于計(jì)算,數(shù)學(xué)性較高,openCV對(duì)Mat類(lèi)型的計(jì)算也進(jìn)行了優(yōu)化。而CvMat和IplImage類(lèi)型更側(cè)重于“圖像”,openCV對(duì)其中的圖像操作(縮放、單通道提取、圖像閾值操作等)進(jìn)行了優(yōu)化。補(bǔ)充:IplImage由CvMat派生,而CvMat由CvArr派生即CvArr-CvMat-IplImageCvArr用作函數(shù)的參數(shù),無(wú)論傳入的是CvMat或IplImage,內(nèi)部都是按CvMat處理。1.CvMatA.CvMat-IplImageIplImage*img=cvCreateImage(cvGetSize(mat),8,1);cvGetImage(matI,img);cvSaveImage("rice1.bmp",img);B.CvMat-Mat與IplImage的轉(zhuǎn)換類(lèi)似,可以選擇是否復(fù)制數(shù)據(jù)。Mat::Mat(constCvMat*m,boolcopyData=false);在openCV中,沒(méi)有向量(vector)的數(shù)據(jù)結(jié)構(gòu)。任何時(shí)候,但我們要表示向量時(shí),用矩陣數(shù)據(jù)表示即可。但是,CvMat類(lèi)型與我們?cè)诰€性代數(shù)課程上學(xué)的向量概念相比,更抽象,比如CvMat的元素?cái)?shù)據(jù)類(lèi)型并不僅限于基礎(chǔ)數(shù)據(jù)類(lèi)型,比如,下面創(chuàng)建一個(gè)二維數(shù)據(jù)矩陣:CvMat*cvCreatMat(introws,intcols,inttype);這里的type可以是任意的預(yù)定義數(shù)據(jù)類(lèi)型,比如RGB或者別的多通道數(shù)據(jù)。這樣我們便可以在一個(gè)CvMat矩陣上表示豐富多彩的圖像了。2.IplImage在類(lèi)型關(guān)系上,我們可以說(shuō)IplImage類(lèi)型繼承自CvMat類(lèi)型,當(dāng)然還包括其他的變量將之解析成圖像數(shù)據(jù)。IplImage類(lèi)型較之CvMat多了很多參數(shù),比如depth和nChannels。在普通的矩陣類(lèi)型當(dāng)中,通常深度和通道數(shù)被同時(shí)表示,如用32位表示RGB+Alpha.但是,在圖像處理中,我們往往將深度與通道數(shù)分開(kāi)處理,這樣做是OpenCV對(duì)圖像表示的一種優(yōu)化方案。IplImage的對(duì)圖像的另一種優(yōu)化是變量origin----原點(diǎn)。在計(jì)算機(jī)視覺(jué)處理上,一個(gè)重要的不便是對(duì)原點(diǎn)的定義不清楚,圖像來(lái)源,編碼格式,甚至操作系統(tǒng)都會(huì)對(duì)原地的選取產(chǎn)生影響。為了彌補(bǔ)這一點(diǎn),openCV允許用戶定義自己的原點(diǎn)設(shè)置。取值0表示原點(diǎn)位于圖片左上角,1表示左下角。dataOrder參數(shù)定義數(shù)據(jù)的格式。有IPL_DATA_ORDER_PIXEL和IPL_DATA_ORDER_PLANE兩種取值,前者便是對(duì)于像素,不同的通道的數(shù)據(jù)交叉排列,后者表示所有通道按順序平行排列。IplImage類(lèi)型的所有額外變量都是對(duì)“圖像”的表示與計(jì)算能力的優(yōu)化。A.IplImage-MatIplImage*pImg=cvLoadImage("lena.jpg");Matimg(pImg,0);//0是不復(fù)制影像,也就是pImg與img的data共用同個(gè)記憶體位置,header各自有B.IplImage-CvMat法1:CvMatmathdr,*mat=cvGetMat(img,mathdr);法2:CvMat*mat=cvCreateMat(img-height,img-width,CV_64FC3);cvConvert(img,mat);C.IplImage*-BYTE*BYTE*data=img-imageData;CvMat和IplImage創(chuàng)建時(shí)的一個(gè)小區(qū)別:1、建立矩陣時(shí),第一個(gè)參數(shù)為行數(shù),第二個(gè)參數(shù)為列數(shù)。CvMat*cvCreateMat(introws,intcols,inttype);2、建立圖像時(shí),CvSize第一個(gè)參數(shù)為寬度,即列數(shù);第二個(gè)參數(shù)為高度,即行數(shù)。這個(gè)和CvMat矩陣正好相反。IplImage*cvCreateImage(CvSizesize,intdepth,intchannels);CvSizecvSize(intwidth,intheight);IplImage內(nèi)部buffer每行是按4字節(jié)對(duì)齊的,CvMat沒(méi)有這個(gè)限制補(bǔ)充:A.BYTE*-IplImage*img=cvCreateImageHeader(cvSize(width,height),depth,channels);cvSetData(img,data,step);//首先由cvCreateImageHeader()創(chuàng)建IplImage圖像頭,制定圖像的尺寸,深度和通道數(shù);//然后由cvSetData()根據(jù)BYTE*圖像數(shù)據(jù)指針設(shè)置IplImage圖像頭的數(shù)據(jù)數(shù)據(jù),//其中step指定該IplImage圖像每行占的字節(jié)數(shù),對(duì)于1通道的IPL_DEPTH_8U圖像,step可以等于width。
從策劃到設(shè)計(jì)制作,每一步都追求做到細(xì)膩,制作可持續(xù)發(fā)展的企業(yè)網(wǎng)站。為客戶提供網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)、域名注冊(cè)、虛擬主機(jī)、網(wǎng)絡(luò)營(yíng)銷(xiāo)、VI設(shè)計(jì)、 網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,以客戶的口碑塑造優(yōu)易品牌,攜手廣大客戶,共同發(fā)展進(jìn)步。
你在刷題啊
def?mk_mat(num):
output?=?[]
for?i?in?range(num):
output.append([x+i*10?for?x?in?range(num)])
return?output
print?mk_mat(4)
1、首先打開(kāi)pycharm軟件,新建一個(gè)python文件并導(dǎo)入numpy庫(kù)。
2、然后創(chuàng)建矩陣A,這里先創(chuàng)建一個(gè)兩行兩列的數(shù)組,在用numpy的mat函數(shù)將數(shù)組轉(zhuǎn)換為矩陣。
3、接著計(jì)算矩陣A的逆矩陣,逆矩陣是通過(guò)A.I求得。
4、求出了矩陣A的逆矩陣后,用矩陣B乘以這個(gè)逆矩陣就是矩陣的除法了,即為矩陣B除以矩陣A的值。
python將數(shù)組轉(zhuǎn)換為矩陣,方法如下:
數(shù)組轉(zhuǎn)換矩陣:?
A = mat(s[])
Python的定義:
Python是一種面向?qū)ο?、直譯式計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,Python語(yǔ)法簡(jiǎn)捷而清晰,具有豐富和強(qiáng)大的類(lèi)庫(kù)。
它常被為膠水語(yǔ)言,它能夠很輕松的把用其他語(yǔ)言制作的各種模塊(尤其是C/C++)輕松地聯(lián)結(jié)在一起。常見(jiàn)的一種應(yīng)用情形是,使用python快速生成程序的原型(有時(shí)甚至是程序的最終界面),然后對(duì)其中有特別要求的部分,用更合適的語(yǔ)言改寫(xiě)。比如3D游戲中的圖形渲染模塊,速度要求非常高,就可以用C++重寫(xiě)。
前言
今天拿到一個(gè)傳感器信號(hào)文件,txt格式,有十幾行,每行是一組json格式數(shù)據(jù),有兩個(gè)字段(鍵):'series'和'id',共4個(gè)json對(duì)象,id從'901'到'904',其中每組的series是是個(gè)數(shù)組,數(shù)組中包含512個(gè)json對(duì)象,每個(gè)json對(duì)象含有兩個(gè)字段:'time'和'value'。
圖1 原始文件
解析
MATLAB本身無(wú)直接解析json數(shù)據(jù)的函數(shù),我從MATLAB官網(wǎng)論壇File Exchange上找到兩個(gè)解析json的第三方函數(shù):json4mat和parse_json。這兩個(gè)函數(shù)均能成功解析json格式數(shù)據(jù)到MATLAB支持的cell和struct類(lèi)型數(shù)據(jù)。
下載地址:;query=jsonterm=json
發(fā)現(xiàn)json4mat比parse_json的解析速度更快。
示例
以json4mat為例,
3? ? ?%%?解析 ?
4? ? ?clear;clc; ?
5? ? ?file?=?'C:\Users\Administrator\Desktop\06\zlw\AccData-18-29-43.txt'; ?
6? ? ?A?=?importdata(file); ?
7? ? ?M?=?[]; ?
8? ? ?for?i?=?1:numel(A) ?
9? ? ?????M=[M;json2mat(A{i})]; ?
10? ? ?end?%方法1,json2mat函數(shù) ?
11? ? ?? ?
12? ? ?%?for i = 1:numel(A) ?
13? ? ?%?????tmp = parse_json(A{i}); ?
14? ? ?%?????M = [M;tmp{1}]; ?
15? ? ?%?end %方法2,parse_json函數(shù) ?
結(jié)果
解析后得到的16*4的cell格式數(shù)據(jù),里面每個(gè)元素是結(jié)構(gòu)體struct數(shù)據(jù)。每個(gè)結(jié)構(gòu)體有兩個(gè)字段:series和id。可供MATLAB進(jìn)行處理。
圖2 解析后的數(shù)據(jù)
一、mat文件
mat數(shù)據(jù)格式是Matlab的數(shù)據(jù)存儲(chǔ)的標(biāo)準(zhǔn)格式。在Matlab中主要使用load()函數(shù)導(dǎo)入一個(gè)mat文件,使用save()函數(shù)保存一個(gè)mat文件。對(duì)于文件
load('data.mat')
save('data_1.mat','A')
其中,'A'表示要保存的內(nèi)容。
二、python中讀取mat文件
在python中可以使用scipy.io中的函數(shù)loadmat()讀取mat文件,函數(shù)savemat保存文件。
1、讀取文件
如上例:
#coding:UTF-8
import scipy.io as scio
dataFile = 'E://data.mat'
data = scio.loadmat(dataFile)
注意,讀取出來(lái)的data是字典格式,可以通過(guò)函數(shù)type(data)查看。
print type(data)
結(jié)果顯示
type 'dict'
找到mat文件中的矩陣:
print data['A']
結(jié)果顯示
[[ 0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0.
0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0.
。。。。。。。。。。。
0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0.
0.36470588 ?0.90196078 ?0.99215686 ?0.99607843 ?0.99215686 ?0.99215686
0.78431373 ?0.0627451 ? 0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0.
0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0.
。。。。。。。。。。。。
0.94117647 ?0.22745098 ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0.
0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0.
0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0.
0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0.30196078
。。。。。。。
0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0.
0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ? ?0. ? ? ? ?]]
格式為:
type 'numpy.ndarray'
即為numpy中的矩陣格式。
2、保存文件
將這里的data['A']矩陣重新保存到一個(gè)新的文件dataNew.mat中:
dataNew = 'E://dataNew.mat'
scio.savemat(dataNew, {'A':data['A']})
分享名稱:mat函數(shù)python3 mat函數(shù)用法
鏈接URL:http://aaarwkj.com/article44/doodjee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、小程序開(kāi)發(fā)、網(wǎng)站營(yíng)銷(xiāo)、面包屑導(dǎo)航、品牌網(wǎng)站建設(shè)、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容