Mat m(1,4,CV_32F);
float arr[]={2,3,4,1};
float arr2[]={2,3,3,3};
struct timeval tpstart,tpend;
gettimeofday(&tpstart,NULL);
for(int j=0;j<10000;++j){
for(int i=0;i<4;++i){
m.at<float>(0,i)=arr[i];
}
}
cout<<m<<endl;
gettimeofday(&tpend,NULL);
size_t diff=(tpend.tv_sec-tpstart.tv_sec)*1000000+(tpend.tv_usec-tpstart.tv_usec);
cout<<diff<<endl;
gettimeofday(&tpstart,NULL);
for(int j=0;j<10000;++j){
float *fp=(float*)m.data;
for(int i=0;i<4;++i){
fp[i]=arr2[i];
}
}
cout<<m<<endl;
gettimeofday(&tpend,NULL);
diff=(tpend.tv_sec-tpstart.tv_sec)*1000000+(tpend.tv_usec-tpstart.tv_usec);
cout<<diff<<endl;
gettimeofday(&tpstart,NULL);
for(int j=0;j<10000;++j){
float *fp=m.ptr<float>(0);//0 row
for(int i=0;i<4;++i){
fp[i]=arr2[i];
}
}
cout<<m<<endl;
gettimeofday(&tpend,NULL);
diff=(tpend.tv_sec-tpstart.tv_sec)*1000000+(tpend.tv_usec-tpstart.tv_usec);
cout<<diff<<endl;
结果为:
[2, 3, 4, 1]
431
[2, 3, 3, 3]
269
[2, 3, 3, 3]
330