导航
  • 主页
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

在opencv中

woshifql 2010-08-09 08:46:31
我在显示2*4排列的8副图片后,需要实现任意交换二张图片,这里在交换图片之后,需要用到重绘8副图片。但是在重绘是不能保存上一次的交换结果,我知道程序的逻辑不对但是找不到方法。我的程序如下:
void onmouse(int event, int x, int y, int flag, void *param)
{
IplImage *BackImg;
IplImage *temp,*SZImg[8];
int a,b;
int m=0,n,width=204,height=204;

BackImg = cvLoadImage( "img\\back.jpg", 1);
cvNamedWindow( "Image", CV_WINDOW_AUTOSIZE );

SZImg[0]= cvLoadImage( "img\\1.jpg", 1);//载入图像

SZImg[1]= cvLoadImage( "img\\2.jpg", 1);//载入图像

SZImg[2]= cvLoadImage( "img\\3.jpg", 1);//载入图像

SZImg[3]= cvLoadImage( "img\\4.jpg", 1);//载入图像

SZImg[4]= cvLoadImage( "img\\5.jpg", 1);//载入图像

SZImg[5]= cvLoadImage( "img\\6.jpg", 1);//载入图像

SZImg[6]= cvLoadImage( "img\\7.jpg", 1);//载入图像

SZImg[7]= cvLoadImage( "img\\8.jpg", 1);//载入图像

if(event== CV_EVENT_LBUTTONDOWN)
{

startpoint0 = cvPoint(x,y);
startpoint.x=startpoint0.x;
startpoint.y=startpoint0.y;

}

else if(event== CV_EVENT_RBUTTONDOWN)
{
endpoint0=cvPoint(x,y);
endpoint.x =endpoint0.x;
endpoint.y =endpoint0.y;
if(startpoint.y<204)
a=startpoint.x/204;//判断鼠标左击图片

else
a=startpoint.x/204+4;

if(endpoint.y<204)
b=endpoint.x/204;//判断鼠标右击图片

else
b=endpoint.x/204+4;

temp =SZImg[a]; //图片交换
SZImg[a]=SZImg[b];
SZImg[b]=temp;

m=0, n=0;
cvCopySubImage(BackImg, cvRect(m,n,204,204), SZImg[0]);
m = 204,n=0;
cvCopySubImage(BackImg, cvRect(m,n,204,204), SZImg[1]);
m = 408,n=0;
cvCopySubImage(BackImg, cvRect(m,n,204,204), SZImg[2]);
m = 612,n=0;
cvCopySubImage(BackImg, cvRect(m,n,204,204), SZImg[3]);
m = 0, n=204;
cvCopySubImage(BackImg, cvRect(m,n,204,204), SZImg[4]);
m = 204,n=204;
cvCopySubImage(BackImg, cvRect(m,n,204,204), SZImg[5]);
m = 408,n=204;
cvCopySubImage(BackImg, cvRect(m,n,204,204), SZImg[6]);
m = 612,n=204;
cvCopySubImage(BackImg, cvRect(m,n,204,204), SZImg[7]);

cvShowImage( "Image", BackImg ); //显示图像
cvWaitKey(0); //等待按键

}

}
...全文
1144 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hongya6088 2010-08-09
但是在重绘是不能保存上一次的交换结果是什么意思,是下次打开程序要保存上次的状态,还是根本就没有交换位置?
回复
woshifql 2010-08-09
回复就可以包养
回复
woshifql 2010-08-09
求回复!
回复
woshifql 2010-08-09
请大侠帮帮忙
回复
woshifql 2010-08-09
交换了位置,但是在第二次交换时,上一次交换的图片有回复原来的位置了,就是不能显示第一次交换后的位置。怎么办?
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……