2016-02-26 166 views
0

我想读取图像,并使用OpenCV从它裁剪一个矩形区域。然而,我得到的裁剪图像似乎与原始图像不成比例并且大小不一样。我的代码有问题吗?还是我在做一些愚蠢的事情,如无意中放大窗口。在Ubuntu上运行。OpenCV裁剪图像失真

#include "opencv2/opencv.hpp" 
#include <stdio.h> 
#include <iostream> 
#include <stdlib.h> 


using namespace cv; 
using namespace std; 

int main() 
{ 

    // Read in an image 1 
    Mat Cloud1 = imread("/home/user1/Pictures/cloud1.jpeg"); 
    Rect rect(250,250,150,150); //some random values 
    Mat Template = Cloud1(rect); 
    namedWindow("FIGURE 1", CV_WINDOW_AUTOSIZE); 
    namedWindow("FIGURE 2", CV_WINDOW_AUTOSIZE); 
    imshow("FIGURE 1", Cloud1); 
    imshow("FIGURE 2", Template); 
    waitKey(0); 

    return 0; 
} 

enter image description here

更新:没关系我认为这是一个显示问题,因为当我黑暗的模板Template = 1.0f * Template - 20,原始图像被正确修改。

+1

Wierd ...代码似乎很好.. – Miki

+0

这可能是由于'CV_WINDOW_AUTOSIZE',但它不应该,但我已经经历了'imshow'意外行为,所以请将图像保存在指定的位置和检查结果。 – ZdaR

回答

0

不是专家,但不是你正在做的只是调整到新的界限?

在openCV中,您需要设置感兴趣区域并从ROI创建新图像。