標籤:opencv
先看一個簡單的例子
代碼:
// ConsoleApplication3_6_23.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include<opencv2/opencv.hpp>#include<iostream>#include<vector>using namespace std;using namespace cv;int _tmain(int argc, _TCHAR* argv[]){Mat src,dst,dst1,dst2;src = imread("test.png");if(!src.data)return -1;namedWindow("原圖",CV_WINDOW_AUTOSIZE);namedWindow("x--",CV_WINDOW_AUTOSIZE);namedWindow("y--",CV_WINDOW_AUTOSIZE);imshow("原圖",src);int nr = src.rows;int nc = src.cols;/************************************************************************//* x方向 *//************************************************************************/dst = src.clone();for (int i = 0;i < nr;++i){for (int j = 0;j < nc;++j){dst.at<Vec3b>(i,j) = src.at<Vec3b>(i,nc-j-1);}}imshow("x--",dst);/************************************************************************//* y方向 *//************************************************************************/src.copyTo(dst1);for (int i = 0;i < nr;++i){for (int j = 0;j < nc;++j){dst1.at<Vec3b>(i,j) = src.at<Vec3b>(nr-i-1,j);}}imshow("y--",dst1);waitKey(0);return 0;}
1、Mat的ptr和[]
void image_rever(Mat& src,Mat& dst){int nr = src.rows;int nc = src.cols;int ch = src.channels();for (int i = 0;i < nr;++i){uchar* srcr = src.ptr<uchar>(i);uchar* dstr = dst.ptr<uchar>(i);for (int j = 0;j < nc;++j){dstr[ch * j + 0] = srcr[ch * (nc - j - 1) + 0];dstr[ch * j + 1] = srcr[ch * (nc - j - 1) + 1];dstr[ch * j + 2] = srcr[ch * (nc - j - 1) + 2];}}}