我看到学习OpenCV中英文版98页的那个例子,为什么要先用cvCloneImage 在用cvCopyImage,代码如下 20

intmain(){box=cvRect(-1,-1,0,0);IplImage*img=cvCreateImage(cvSize(200,200),IPL_DEPTH_... int main()
{
box=cvRect(-1,-1,0,0);
IplImage* img=cvCreateImage(cvSize(200,200),IPL_DEPTH_8U,3);
cvZero(img);
IplImage* temp=cvCloneImage(img);
cvNamedWindow("Show",1);
cvSetMouseCallback("Show",my_mouse_callback,(void*)img);
while(1)
{
cvCopyImage(img,temp);
if(drawing_box)
{
draw_box(temp,box);
}
cvShowImage("Show",temp);
if (cvWaitKey(15)==27)
{
break;
}
}
cvReleaseImage(&img);
cvReleaseImage(&temp);
cvDestroyWindow("Show");

}
展开
 我来答
轻一鸿
2011-11-04 · TA获得超过141个赞
知道小有建树答主
回答量:118
采纳率:0%
帮助的人:126万
展开全部
这两个函数的作用都是复制一个图片,不同的地方是:cvCloneImage函数是克隆出一个新的图片,并且是自动申请内存来存放这个图片,新图片的通道数/位数等属性都与原图相同。而使用cvCopyImage函数前需要手动的申请内存,在有内存的情况下再去复制你要的图片。

所以这里是先申请得到一个内存而已,你使用cvCreateImage()创建一个图片后再拷贝也是一样的。
可爱的八嘎牙路酱
2011-10-28 · TA获得超过3386个赞
知道大有可为答主
回答量:1695
采纳率:0%
帮助的人:1591万
展开全部
IplImage* temp=cvCloneImage(img);
相当于重新定义了 一个temp ,内容与img相同,但使用的存储空间不同
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
儒璇球5583
2011-10-28 · TA获得超过7.1万个赞
知道大有可为答主
回答量:4.1万
采纳率:0%
帮助的人:5621万
展开全部
cvCloneImage是分配内存的,不然copy会出错,有cvCreateImage也一样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式