OpenCV三維影象的建立和資料遍歷
阿新 • • 發佈:2019-01-11
建立一個如圖所示的3 X 4 X 6 三維矩陣
#include <iostream> #include <opencv2/opencv.hpp> #include <opencv2/highgui.hpp> using namespace std; using namespace cv; int main(int argc, const char * argv[]) { // insert code here... int sz[] = { 3, 4, 6}; //倒著存放,對應三維立體影象的高、寬、長 Mat Img = Mat(3,sz, CV_16SC4, Scalar::all(0)); cout<<"三維影象的維度:"<<Img.dims<<endl; cout<<"三維影象的通道數:"<<Img.channels()<<endl; cout<<"三維影象的長:"<<6<<endl; cout<<"三維影象的寬:"<<Img.size().width<<endl; cout<<"三維影象的高:"<<Img.size().height<<endl; cout<<"存放一個數字的大小 = sizeof(short) = 16/8 = "<<Img.elemSize1()<<endl; cout<<"存放一個畫素點的大小:"<<Img.elemSize()<<endl; cout<<"平面的大小 -> Img.step[0] = "<<Img.step[0]<<endl; //長 ✖️ 寬 ✖️ elemSize() = 6 * 4 * 8 = 192 cout<<"行的大小 -> Img.step[1] = "<<Img.step[1]<<endl; //長 ✖️ elemSize() = 48 cout<<"元素的大小 -> Img.step[2] = "<<Img.step[2]<<endl; //元素的大小 /*定址方法*/ unsigned char * addrM012 = NULL; addrM012 = Img.data + Img.step[0] * 0 + Img.step[1] * 1 + Img.step[2] * 2; cout<<"資料開始地址:"<<(void*)Img.data<<endl; cout<<"Img[0,1,2] 的地址是:"<<(void*)addrM012<<endl; return 1; }