2013-10-19 28 views
0
include <iostream> 
include <opencv2\imgproc\imgproc.hpp> 
include <opencv2\core\core.hpp> 
include <opencv2\highgui\highgui.hpp> 
using namespace std; 
using namespace cv; 
int main(int argc, char** argv){  
    cv::Mat src = cv::imread("lena.jpg"); 
    cv::Mat gray; 
    cv::Mat resize; 
    cv::Mat big; 
    cv:: Mat enlarged; 
    cv::cvtColor(src, gray, CV_BGR2GRAY); 
    cv::resize(gray, resize, cv::Size(src.rows/2, src.cols/2)); 
    cv::resize(resize, big, cv::Size(src.rows, src.cols)); 
    cv::resize(enlarged, resize, cv::Size(src.rows, src.cols)); 
     int newsrow,newscol; 

    cv::Mat clone(resize.rows, resize.cols, CV_8U); 
    for(int y=0;y<resize.rows;y++){ 
     for(int x=0;x<resize.cols;x++){ 
     clone.at<uchar>(y,x) = resize.at<uchar>(y,x); 
     } 
    } 

    newsrow=resize.rows*2; 
    newscol=resize.cols*2; 

    cv::Mat clone1(newsrow,newscol ,CV_8U); 
    for(int i=0;i<newsrow;i++){ 
     for(int j=0;j<newscol;j++){ 
      clone1.at<uchar>(i,j); 
     } 
    } 
    cv::imshow("clone", clone); 
    cv::imshow("clone1",clone1); 
    cv::waitKey(0); 
     return 0;} 

從我的代碼在這一行clone1如何顯示圖像作爲克隆更大的大小? 由於我的問題是擴大到雙倍大小,但我的老師告訴我,她需要通過循環放大到雙倍大小。所以她不需要使用雙倍大小的圖書館。 不要改變任何循環,因爲我的老師需要我通過使用這個代碼放大圖像。但是你稍微改變一下。 提示:她指導我建立如果循環是n/2> 2;我怎樣才能顯示我的圖像從我的代碼與OPENCV

最佳謝謝 Chairat(泰國)

回答

0

您必須創建新墊。 Mat.size有*運算符超載。對於3尺寸更大的圖像;

cv::Mat BiggerImage; 
cv::resize(clone, BiggerImage, clone1.size() * 3); 
cv::imshow("BiggerImage",BiggerImage); 
+0

謝謝你的回答。但是,如果她暗示我循環n/2> 2呢? – zlatan14

+0

然後我想我不明白你的問題。你正試圖顯示clone1更大的尺寸?哪裏和有多大?你爲什麼需要一個循環?需要一些細節。 – emrahustun

+0

我只是編輯我的問題,請幫助我。謝謝 – zlatan14