Opencv-遍历图像的几种方法

来源:互联网 发布:连云港管家婆软件 编辑:程序博客网 时间:2024/05/17 07:03

读取图像:

int main(int argc, char* argv[]){    const char* imagename = "lena.jpg";//从文件中读入图像IplImage* img = cvLoadImage(imagename);cvNamedWindow("mainwin",CV_WINDOW_AUTOSIZE);//显示图像cvShowImage("mainwin", img);//revert imagerevertimage(img);cvShowImage("reverted image", img);//smooth imageIplImage* 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];    }}}

读取图像结果与取反结果

0 0
原创粉丝点击