Opencv-遍历图像的几种方法

读取图像:

int main(int argc, char* argv[])
{
    const char* imagename = "lena.jpg";

//从文件中读入图像
IplImage* img = cvLoadImage(imagename);
cvNamedWindow("mainwin",CV_WINDOW_AUTOSIZE);

//显示图像
cvShowImage("mainwin", img);

//revert image
revertimage(img);
cvShowImage("reverted image", img);

//smooth image
IplImage* smimage = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,3);
cvSmooth(img,smimage,CV_GAUSSIAN,3,3);
cvShowImage("smooth image",smimage);

//键盘响应
cvSetMouseCallback("mainwin",MouseHandler,NULL);
//此函数等待按键,按键盘任意键就返回
waitKey();
cvReleaseImage(&smimage);
cvReleaseImage(&img);
return 0;

}

C++形式

int main(int argc, char* argv[])
{
const char* imagename = "../lena.png";

//从文件中读入图像
Mat img = imread(imagename);
Mat reimg = img.clone();

//显示图像
imshow("source image", img);
revertimage(reimg);
imshow("revert image", reimg);

//此函数等待按键,按键盘任意键就返回
waitKey(0);
return 0;
}

void revertimage(Mat &img)
{
int nrows, ncols, nchannels;
nchannels = img.channels();
nrows = img.rows;
ncols = img.cols * nchannels;

if (img.isContinuous())
{
    ncols = nrows * ncols;
    nrows = 1;
}

uchar* p;
for (int i =0; i

Opencv-遍历图像的几种方法_第1张图片

你可能感兴趣的:(opencv)