求图像翻转算法(非旋转)

YourKing 2010-08-03 05:04:11
最好是能以对称轴实现任意角度翻转
...全文
216 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Guassfans 2010-08-04
  • 打赏
  • 举报
回复
贴个水平/垂直翻转code:

///***************************************************************/
/*函数名称:JingXiang(bool fangshi)
/*函数类型:void
/*参数说明:fangshi --判断标志为 true 水平镜像,为 false 垂直镜像
/*功能:对图像进行镜像显示。
/***************************************************************/
void JiHeBianHuanDib::JingXiang(bool fangshi)
{
// 指向源图像的指针
LPBYTE lpSrc;
LPBYTE p_data;
// 指向要复制区域的指针
LPBYTE lpDst;
// 指向复制图像的指针
LPBYTE temp;
// 循环变量
LONG i;
LONG j;
//图像的高与宽
long height=this->GetHeight();
long wide=this->GetWidth();
p_data=this->GetData();
// 暂时分配内存,以保存一行图像
temp = new BYTE[wide*height];
// 判断镜像方式
if (fangshi) // 水平镜像
{
if (m_pBitmapInfoHeader->biBitCount<9) //灰度图像
{
// 针对图像每行进行操作
for(j = 0; j < height; j++)
{
for(i = 0; i < wide;i++)
{
lpSrc = (LPBYTE)p_data +wide *j + i;
lpDst = (LPBYTE)temp + wide* j+ wide - i;
*lpDst = *lpSrc;
}
}
memcpy(p_data,temp, wide*height);
}
else //24位彩色
{
wide=this->GetDibWidthBytes();
temp=new BYTE[height*wide];
// 针对图像每行进行操作
for(j = 0; j < height; j++)
{
for(i = 0; i < wide;i=i+3)
{
lpSrc = (LPBYTE)(p_data +wide *j + i);
lpDst = (LPBYTE)temp + wide* j+ wide - i;
*(lpDst) = *lpSrc;
*(lpDst+1) = *(lpSrc+1);
*(lpDst+2) = *(lpSrc+2);
}
}
memcpy(p_data,temp, wide*height);
}
}
else // 垂直镜像
{
if (m_pBitmapInfoHeader->biBitCount<9) //灰度图像
{
// 针对上半图像进行操作
for(i = 0; i < wide;i++)
{
for(j = 0; j < height; j++)
{
lpSrc = (LPBYTE)p_data + wide * j+i;
lpDst = (LPBYTE)temp + wide * (height - j - 1)+i;
*lpDst = *lpSrc;
}
}
memcpy(p_data,temp, wide*height);
}
else //24位彩色
{
wide=this->GetDibWidthBytes();
temp=new BYTE[height*wide];
// 针对上半图像进行操作
for(i = 0; i < wide;i++)
{
for(j = 0; j < height; j++)
{
lpSrc = (LPBYTE)p_data + wide * j+i;
lpDst = (LPBYTE)temp + wide * (height - j - 1)+i;
*lpDst = *lpSrc;
}
}
memcpy(p_data,temp, wide*height);
// 释放内存
delete temp;
}
}
}
xiuxianshen 2010-08-03
  • 打赏
  • 举报
回复
数学公式而已,然后根据实际的精度要求做适当的插值算法就可以了
liuhaifeng1976 2010-08-03
  • 打赏
  • 举报
回复
矩阵变换
visualassist4680 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xxd_qd 的回复:]

引用楼主 yourking 的回复:
最好是能以对称轴实现任意角度翻转

按任意角度对称轴翻转,等价于按特定对称轴(比如X轴)翻转后再按任意角度旋转。
[/Quote]
旋转 + 翻转
xxd_qd 2010-08-03
  • 打赏
  • 举报
回复
图像旋转的算法也没有?
YourKing 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 beyond071 的回复:]

貌似不是很难 楼主不愿意想想么
[/Quote]
没做出来,所以发帖请教了
xxd_qd 2010-08-03
  • 打赏
  • 举报
回复
第二个任意角度是第一个任意角度的2倍。
xxd_qd 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用楼主 yourking 的回复:]
最好是能以对称轴实现任意角度翻转
[/Quote]
按任意角度对称轴翻转,等价于按特定对称轴(比如X轴)翻转后再按任意角度旋转。
beyond071 2010-08-03
  • 打赏
  • 举报
回复
貌似不是很难 楼主不愿意想想么

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧