就是打算根据像素复制,来放大图像。然后我打算用创建一个原图像2倍大的输出图像,然后用.at()函数进行一个个像素赋值。为什么执行不了,有没人指点指点,以下是我 写的代码。
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
void pixel(Mat& inputig, int m);
int main()
{
Mat image = imread("pic.jpg", 0);
int m;//放大倍数
imshow ("yuantu", image);
pixel(image, 2);
return 0;
}
void pixel(Mat& inputig, int m)
{
int width = inputig.cols*m;
int height = inputig.rows*m;
Mat outputig(width,height,CV_8UC1);
outputig.setTo(0);
int x = 0;
for (int i = 0; i < height; )
{
int y = 0;
for (int j = 0; j < width; )
{
for (int k = 0; k < m; k++)
{
for (int t = 0; t < m; t++)
{
outputig.at<Vec3b>(i + k, j + t)[0] = inputig.at<Vec3b>(x, y)[0];
}
} j = j + m; y++;
}
i = i + m; x++;
}
imshow("pixel", outputig);
waitKey();
}
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
void pixel(Mat& inputig, int m);
int main()
{
Mat image = imread("pic.jpg", 0);
int m;//放大倍数
imshow ("yuantu", image);
pixel(image, 2);
return 0;
}
void pixel(Mat& inputig, int m)
{
int width = inputig.cols*m;
int height = inputig.rows*m;
Mat outputig(width,height,CV_8UC1);
outputig.setTo(0);
int x = 0;
for (int i = 0; i < height; )
{
int y = 0;
for (int j = 0; j < width; )
{
for (int k = 0; k < m; k++)
{
for (int t = 0; t < m; t++)
{
outputig.at<Vec3b>(i + k, j + t)[0] = inputig.at<Vec3b>(x, y)[0];
}
} j = j + m; y++;
}
i = i + m; x++;
}
imshow("pixel", outputig);
waitKey();
}