C语言实现bmp图像的平移操作

平移变换是一种几何变换。平移的公式为:x1=x0+t,y1=y0+t,其中(x0,y0)是原图像中的坐标,(x1,y1)是经过平移变换后的对应点的坐标。
在编程中,先将处理后图像的所有区域赋值为白色,然后找出平移后显示区域的左上角点(x0,y0)和右下角点(x1,y1),分以下几种情况处理:
先看x方向(width为图像的宽度)
(1)t<=-width,图像向左移动,此时图像完全移除了显示区域,所以不做任何处理;
(2)-width   (3)0

  (4)t>=width,图像向右移动且完全移出了显示区域,因此不做处理。


上下平移的方法与左右移动相同。

左右平移C语言代码如下:

// left_right_translation.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include
#include
#include

int _tmain(int argc, _TCHAR* argv[])
{
	int width;
	int height;
	RGBQUAD *pTableColor;
	unsigned char *pBmpBuf1,*pBmpBuf2;

	BITMAPFILEHEADER bfhead;
	BITMAPINFOHEADER bihead;
	
	//读出源图像的信息
	FILE *fpr=fopen("E:\\picture\\dog.bmp","rb");
	if(fpr==0)
		return 0;
	fread(&bfhead,14,1,fpr);
	fread(&bihead,40,1,fpr);
	width=bihead.biWidth;
	height=bihead.biHeight;
	int LineByte=(width*8/8+3)/4*4;
	pTableColor=new RGBQUAD[256];
	fread(pTableColor,sizeof(RGBQUAD),256,fpr);
	pBmpBuf1=new unsigned char[LineByte*height];
	fread(pBmpBuf1,LineByte*height,1,fpr);
	fclose(fpr);
	//将处理后的图像赋值为白色
	pBmpBuf2=new unsigned char[LineByte*height];
	for(int i=0;i0):");
	scanf("%d",&t);
	int k=abs(t);
	printf("%d",k);
	if(t<0)
	{
		if(t>=(-width))
		{
			for(int i=0;i

原图:

C语言实现bmp图像的平移操作_第1张图片

向左平移100个像素后图像:


C语言实现bmp图像的平移操作_第2张图片

向右移动200像素:

C语言实现bmp图像的平移操作_第3张图片

你可能感兴趣的:(c语言图像处理)