社区
图形处理/算法
帖子详情
如何水平镜象图象
whn
2003-11-18 11:57:31
我想对24位真彩的bmp图象的数据部分缓冲进行水平镜象
比如
void xmirror(BYTE* pInbuf,BYTE* pOutbuf,int nWidth,int nHeight);
其中pInbuf是原始的图象的数据部分缓冲
pOutbuf是镜象后的数据部分缓冲
nWidth,nHeight是图象的宽和高
...全文
109
2
打赏
收藏
如何水平镜象图象
我想对24位真彩的bmp图象的数据部分缓冲进行水平镜象 比如 void xmirror(BYTE* pInbuf,BYTE* pOutbuf,int nWidth,int nHeight); 其中pInbuf是原始的图象的数据部分缓冲 pOutbuf是镜象后的数据部分缓冲 nWidth,nHeight是图象的宽和高
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shally5
2003-11-18
打赏
举报
回复
再学
wrcluomo
2003-11-18
打赏
举报
回复
/*************************************************************************
*
* 函数名称:
* MirrorDIB()
*
* 参数:
* LPSTR lpDIBBits - 指向源DIB图像指针
* LONG lWidth - 源图像宽度(象素数)
* LONG lHeight - 源图像高度(象素数)
* BOOL bDirection - 镜像的方向,TRUE表示水平镜像,FALSE表示垂直镜像
* int nImageBits -图像的位数
*
* 返回值:
* BOOL - 镜像成功返回TRUE,否则返回FALSE。
*
* 说明:
* 该函数用来镜像DIB图像。可以指定镜像的方式是水平还是垂直。
*支持8,24,32位图像
************************************************************************/
BOOL WINAPI MirrorDIB(LPSTR lpDIBBits, LONG lWidth, LONG lHeight, BOOL bDirection,int nImageBits)
{
// 指向源图像的指针
LPSTR lpSrc;
// 指向要复制区域的指针
LPSTR lpDst;
// 指向复制图像的指针
LPSTR lpBits;
HLOCAL hBits;
// 循环变量
LONG i;
LONG j;
int nBits;//每像素占的位数
// 图像每行的字节数
LONG lLineBytes;
// 计算图像每行的字节数
lLineBytes = WIDTHBYTES(lWidth *nImageBits);
// 暂时分配内存,以保存一行图像
hBits = LocalAlloc(LHND, lLineBytes);
if (hBits == NULL)
{
// 分配内存失败
return FALSE;
}
// 锁定内存
lpBits = (char * )LocalLock(hBits);
int nStep=nImageBits/8;
long lCenter=lWidth/2*nStep;
// 判断镜像方式
if (bDirection)
{
// 水平镜像
// 针对图像每行进行操作
for(i = 0; i < lHeight; i++)
{
// 针对每行图像左半部分进行操作
for(j = 0; j < lCenter; j+=nStep)
{
for(nBits=0;nBits<nStep;nBits++)
{
lpSrc = (char *)lpDIBBits + lLineBytes * i +lCenter- j+nBits;
lpDst = (char *)lpDIBBits + lLineBytes * i +lCenter+ j+nBits;
*lpBits = *lpDst;
*lpDst = *lpSrc;
*lpSrc = *lpBits;
}
}
}
}
else
{
// 垂直镜像
// 针对上半图像进行操作
for(i = 0; i < lHeight / 2; i++)
{
// 指向倒数第i行象素起点的指针
lpSrc = (char *)lpDIBBits + lLineBytes * i;
// 指向第i行象素起点的指针
lpDst = (char *)lpDIBBits + lLineBytes * (lHeight - i - 1);
// 备份一行,宽度为lWidth
memcpy(lpBits, lpDst, lLineBytes);
// 将倒数第i行象素复制到第i行
memcpy(lpDst, lpSrc, lLineBytes);
// 将第i行象素复制到倒数第i行
memcpy(lpSrc, lpBits, lLineBytes);
}
}
// 释放内存
LocalUnlock(hBits);
LocalFree(hBits);
// 返回
return TRUE;
}
供参考。
Python实现图像的
水平
翻转
通过对数组中的每行数据进行倒序操作,就可以实现图像的
水平
翻转。最后一步就是将翻转后的数组再次转换为Pillow库中的Image对象,并使用save()方法将其保存到指定路径下。以上就是使用Python实现图像
水平
翻转的完整...
图像镜像变换
对角镜像:将图像以图像
水平
中轴线和垂直中轴线的交点为中心进行镜像对换,相当于将图像先后进行
水平
镜像和垂直镜像 假设原图像的高度为h,宽度为w,变换后,图像的尺寸不变。那么原图像中(x0,y0)经过
水平
镜像后...
图像处理 -
镜象
处理
镜象
(mirror)分
水平
镜象
和垂直
镜象
两种。
镜象
的变换矩阵很简单。设原图宽为w,高为h,变换后,图的宽和高不变。
水平
镜象
的变化矩阵为: 垂直
镜象
的变化矩阵为: 这里代码是在View.cpp里面加的: ...
Python简单实现图像的
水平
镜像变换
水平
镜像变换原理很简单,只是对宽操作而已,提取图片的高和宽,遍历每个像素,然后用宽减去当前的y坐标即可,注意一定要先创造一个原图片...用PIL、cv2、matplotlib.pyplot、numpy库简单实现一个图像的
水平
镜像变换。
图像镜像与图像转置
以下文字内容copy于>,code为自己实现,是win32控制台程序。
镜象
(mirror)分
水平
镜象
和垂直
镜象
两种。图2.2的
水平
镜象
和垂直
镜象
分别如图2.13和图2.14所示 图2.13 图2.2的
水平
镜象
图形处理/算法
19,468
社区成员
50,698
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章