OpenCV中行数(rows)和列数(cols)对应高(height)和宽(width),由于OpenCV1.0和OpenCV2.0的代码风格有所不同,所以在处理行和列这个细节上面需要多加注意,特别是函数参数的顺序,到底是先行后列还是先列后行。下面是我总结的一些情况:
情况一(定义IplImage*):
IplImage*dst = NULL;
dst =cvCreateImage(cvSize(600, 480), IPL_DEPTH_8U, 3);
这里创建的dst是480行600列的,先列后行。
情况二(定义Mat):
Mat dst;
dst =Mat(480, 600, CV_8UC3);
这里创建的dst同样是是480行600列的,但是先行后列。
情况三(定义感兴趣区域):
RectROI_rect;
ROI_rect.x= 10;
ROI_rect.y= 20;
这里表示定义的感兴趣区域(矩形)的左上角像素的坐标(x,y)是(10,20),即位于第20行,第10列。
这些细节很重要,当使用嵌套的for循环遍历图片的时候,如果没有注意行列这一细节的话,很有可能会出现指针出错的情况。