我有一张图,想在其中设置一个矩形的感兴趣区域
IplImage* pImg = cvLoadImage("a.bmp",1);
//pImg 宽 704 高 576//设置感兴趣区域,宽20 高 30
cvSetImageROI(pImg, cvRect(100, 150, 20, 30));cvNamedWindow("test", -1);
cvShowImage("test", pImg);疑问:
1. test框显示的确实是感兴趣区域,但是为什么感兴趣区域设置以后pImg的宽高还是704 576呢?其实我只想得到宽高为20 30的图片。似乎是只显示设定的感兴趣区域,其它区域被不显示而已(但宽高仍然是初始值?)。该如何只要20 30 的区域呢?
2. 感兴趣区域显示以后,显示的地方被放大了。因为我原图片中那个区域是一个汉字,显示到感兴趣区域里的图片后,汉字明显被放大了,如何做到只显示原始尺寸大小的汉字?
不知道我有没有说明白,请大家解答一下,不胜感激。

解决方案 »

  1.   

    cvNamedWindow("test", -1);改为:
    cvNamedWindow("test", CV_WINDOW_AUTOSIZE);试试
      

  2.   

    用cvResizeWindow是不是可以改变一下窗口的大小呢?
    没做过这样的程序,不知道这个是不是可行,
    我一般处理这样的问题的方式是把需要的部分截下来重新存储,这个我倒是有现成的代码
      

  3.   

    不过cvResizeWindow你试过了吗?
      

  4.   

    2楼的可以,cvShowImage是否支持roi?
    建议是先setroi,然后cvcopy,然后cvshow, 然后releaseroi
      

  5.   

    设置ROI后,图像大小不会变吧,只是有些函数处理的时候会检查ROI,如果ROI在,就只扫描ROI区域
    如果想得到ROI大小的图像,另外开辟一个IplImage,然后cvCopy,
    显示的时候就只显示新开辟的那个
      

  6.   

    2楼的说的可以,新保存一个和抠出相同大小的图像即可,cvCopyImage
      

  7.   

    2楼的可以,cvShowImage是否支持roi?
    建议是先setroi,然后cvcopy,然后cvshow, 然后releaseroi
    怎么抠出来啊。