在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); //等待按键

}

}
...全文
1173 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hongya6088 2010-08-09
  • 打赏
  • 举报
回复
但是在重绘是不能保存上一次的交换结果是什么意思,是下次打开程序要保存上次的状态,还是根本就没有交换位置?
woshifql 2010-08-09
  • 打赏
  • 举报
回复
回复就可以包养
woshifql 2010-08-09
  • 打赏
  • 举报
回复
求回复!
woshifql 2010-08-09
  • 打赏
  • 举报
回复
请大侠帮帮忙
woshifql 2010-08-09
  • 打赏
  • 举报
回复
交换了位置,但是在第二次交换时,上一次交换的图片有回复原来的位置了,就是不能显示第一次交换后的位置。怎么办?

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

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