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 の私のコードから、より大きなサイズのクローンとして画像を表示するにはどうすればよいですか? 私の質問は2倍に拡大することですが、先生はループで2倍に拡大する必要があると言いました。したがって、彼女は倍のサイズのライブラリを使用する必要はありません。私の先生は、このコードだけを使用して画像を拡大する必要があるため、ループを変更しないでください。しかし、あなたはそれを少し変えます。ヒント: ループが n/2>2; の場合、彼女がビルドをガイドしてくれます。

ベストサンクChairat(タイ)

4

1 に答える 1

0

新しいマットを作成する必要があります。Mat.size には * 演算子のオーバーロードがあります。3 サイズ大きい画像の場合。

cv::Mat BiggerImage;
cv::resize(clone, BiggerImage, clone1.size() * 3 );
cv::imshow("BiggerImage",BiggerImage);
于 2013-10-19T13:53:40.213 に答える