MFC+OpenCV 利用Show方法使图像不拉伸显示在Picture控件上

本文介绍了如何在MFC应用程序中使用OpenCV处理图像,并通过调整显示坐标,确保图像在Picture控件上不被拉伸。通过计算控件与图像的宽高比例,确定合适的显示起点,实现不失真的显示效果。
摘要由CSDN通过智能技术生成

利用Show方法可以指定显示的起始坐标,

故只需进行简单的判断,

即可使图像在Picture控件上显示不发生拉伸

 

 

e.g:

rw = rect.right - rect.left;  //得到控件宽度
 rh = rect.bottom - rect.top;  //得到控件高度
 iw = image->width;            //得到图像宽度
 ih = image->height;           //得到图像高度
 tx = (int)(iw - rw)/2;        //得到显示的初始x坐标
 ty = (int)(ih - rh)/2;        //得到显示的初始y坐标
 CvvImage cimg;       //使用CvvImage类的图像的DrawToHDC函数
 
 cimg.CopyOf(image,image -> nChannels ); //根据所给的图像设置其显示的通道数

 if (tx <= 0 && ty <= 0)   //图像比DC小
 {
      x = -tx;  //从DC上的第几行开始
   y = -ty;  //从DC上的第几列开始
      w = iw;  //图像宽度
   h = ih;  //图像高度
      from_x = 0;  //从图像第几行开始
   from_y = 0;  //从图像第几列开始
 }else if (tx > 0 && ty > 0)  //图像比DC大
 {
  x = 0;  //从DC上的第几行开始
  y = 0;  //从DC上的第几列开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值