实验二 #include "cv.h" #include<stdio.h> #include "highgui.h" IplImage *PingYi(IplImage *src, int h0, int w0); int main(int argc, char** argv) {IplImage* pImg; //声明IplImage指针IplImage* pImgAfterMove;pImg = cvLoadImage("6013202130.jpg");pImgAfterMove = cvCloneImage(pImg);cvSetZero(pImgAfterMove);pImgAfterMove = PingYi(pImg, 100, -100);cvNamedWindow("原图", CV_WINDOW_AUTOSIZE);cvShowImage("原图", pImg);cvNamedWindow("移动后", CV_WINDOW_AUTOSIZE);cvShowImage("移动后", pImgAfterMove);cvWaitKey(0); //等待按键 cvDestroyWindow("aa");//销毁窗口cvDestroyWindow("bb");cvReleaseImage(&pImg); //释放图像cvReleaseImage(&pImgAfterMove);return 0; }//该函数的功能是实现图像的平移 //规定向下、向右为(正,正) IplImage *PingYi(IplImage *src, int h0, int w0) {int h = h0;int w = w0;int imageHeight = src->height;int imageWidth = src->width;int i, j;CvScalar sTemp;IplImage *dst = cvCloneImage(src);cvSetZero(dst);if (h >= 0 && w >= 0){// for (i = 0; i<imageHeight - h; i++){for (j = 0; j<imageWidth - w; j++){sTemp = cvGet2D(src, i, j);cvSet2D(dst, i + h, j + w, sTemp);}}}else if (h<0 && w >= 0){for (i = -h; i<imageHeight; i++){for (j = 0; j<imageWidth - w; j++){sTemp = cvGet2D(src, i, j);cvSet2D(dst, i + h, j + w, sTemp);}}}else if (h >= 0 && w<0){for (i = 0; i<imageHeight - h; i++){for (j = -w; j<imageWidth; j++){sTemp = cvGet2D(src, i, j);cvSet2D(dst, i + h, j + w, sTemp);}}}else if (h<0 && w<0){for (i = -h; i<imageHeight; i++){for (j = -w; j<imageWidth; j++){sTemp = cvGet2D(src, i, j);cvSet2D(dst, i + h, j + w, sTemp);}}}else{printf("无法移动哦!");dst = cvCloneImage(src);}return dst;







