您的位置:首页 > 运维架构

Opencv-遍历图像的几种方法

2016-12-08 22:35 531 查看
读取图像:

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<nrows; i++)
{
p = img.ptr(i);
for(int j=0; j<ncols; j++)
{
p[j] = 255 - p[j];
}
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: