cvReleaseImage函数的用法说明


IplImage* temp;

定义了一个指针型变量temp。

temp在内存中的存储示意:                    

3CFE3C

003F9DA0

temp变量的地址          temp的值(存放其他变量的地址)


temp=cvLoadImage("xxx\\1.jpg",0);

printf("%X\n",&temp);temp自身的地址

printf("%p\n",temp);/temp的值(就是存储的变量的地址)

cvReleaseImage(&temp);

printf("%X\n",&temp);temp自身的地址

if(temp==NULL)

    printf("Yeah!!!\n");可以看到Release之后temp的值为NULL(输出为0)

temp=cvLoadImage("xxx\\2.jpg",0);

printf("%X\n",&temp);///temp自身的地址

printf("%p\n",temp);temp的值(就是存储的变量的地址)

可以运行看一下结果。

/****************  运行结果 ******************
3CFE3C
003F9DA0
3CFE3C
Yeah!!!
3CFE3C
001AFF20
请按任意键继续. . .

*********************************************/

总结一下:cvReleaseImage函数只是将IplImage*型的变量值赋为NULL,而这个变量本身还是存在的并且在内存中的存储位置不变。

关于cvLoadImage函数和cvCreateImage函数的补充:

IplImage* pimg=cvLoadImage("xxx.jpg",0);

经过这个语句之后,系统会为载入的图像分配一段内存,地址为XXXXXX。然后指针pimg指向该内存,也即是指针变量pimg的值为XXXXXX。


cvReleaseImage(&pimg);

使用cvReleaseImage函数之后,系统将释放刚才载入图像的内存空间(也即这个图像在内存中已经不存在了),同时pimg的值置为NULL。

关于cvReleaseImage函数的用法说明
下面是类似的。

IplImage* pdst=cvCreateImage( cvsize(SIZE,SIZE),8,1 );

cvReleaseImage(&pdst);

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Delphi 11 中,使用 OpenCV 库将 `IplImage` 显示到 `TImage` 的示例代码如下: ```delphi uses ..., cvTypes, cvUtils; procedure IplImageToTImage(IplImg: IplImage; TImg: TImage); var Bitmap: TBitmap; ImgSrc, ImgDest: pByte; x, y: Integer; begin // 创建 TBitmap 并设置宽高 Bitmap := TBitmap.Create; Bitmap.Width := IplImg.width; Bitmap.Height := IplImg.height; // 将 IplImage 转换为 TBitmap ImgSrc := IplImg.imageData; ImgDest := Bitmap.ScanLine[Bitmap.Height - 1]; for y := 0 to IplImg.height - 1 do begin for x := 0 to IplImg.width - 1 do begin ImgDest[0] := ImgSrc[2]; ImgDest[1] := ImgSrc[1]; ImgDest[2] := ImgSrc[0]; Inc(ImgSrc, 3); Inc(ImgDest, 3); end; ImgDest := Bitmap.ScanLine[Bitmap.Height - 1 - y]; end; // 显示 TBitmap 到 TImage TImg.Picture.Assign(Bitmap); // 释放资源 Bitmap.Free; end; ``` 其中,`IplImg` 是源 `IplImage`,`TImg` 是目标 `TImage`。通过扫描 `IplImage` 中的像素,将其转换为 `TBitmap` 并最终显示到 `TImage`。 使用时,可以在程序中调用 `IplImageToTImage` 这个过程,并将要显示的 `IplImage` 和目标 `TImage` 作为参数传递进去。例如: ```delphi procedure TForm1.Button1Click(Sender: TObject); var IplImg: IplImage; begin // 加载图像到 IplImage IplImg := cvLoadImage('path/to/image.jpg', CV_LOAD_IMAGE_COLOR); // 将 IplImage 显示到 TImage IplImageToTImage(IplImg, Image1); // 释放 IplImage 资源 cvReleaseImage(IplImg); end; ``` 这里的 `cvLoadImage` 函数用于加载图像到 `IplImage`,`cvReleaseImage` 函数用于释放 `IplImage` 资源。根据实际情况修改图像路径和 `TImage` 名称即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值