gpt4 book ai didi

c++ - 转换图像和旋转的程序

转载 作者:太空狗 更新时间:2023-10-29 23:07:24 24 4
gpt4 key购买 nike

我一直在尝试使用 opencv 在 C++ 中制作这个程序,将图像转换为灰度并随后旋转图像,但我得到的输出是各种困惑。

我一直在寻找解决方案并到处寻求帮助,但我一直无法找出我到底做错了什么,所以如果你们中的任何人能帮助我,那就太好了

代码: http://pastebin.com/FSJKyaeU

此外,这是我得到的输出图片 http://i.imgur.com/qpYm1.jpg

最佳答案

请替换:

Mat imRotate(im.cols * 2, im.rows * 2, im.type());

使用这个:

  int size = static_cast<int>(sqrt(im.cols * im.cols/4 + im.rows * im.rows/4) * 2) + 1;
Mat imRotate(size, size , im.type());

然后更新 FuncRotate。我认为你需要做这样的事情:

    void FuncRotate(Mat im, Mat imRotate, int q, int x, int y, int rows, int columns) 
{
double radians = (q * 3.1415)/180; // or try use M_PI instead of 3.1415
double cosr = cos(radians);
double sinr = sin(radians);

for(int i=0; i<columns; i++) //columns of the original image
{
for(int j=0; j<rows; j++) //rows of the original image
{
int NewXPixel = imRotate.cols/2 + ((i-x) * cosr) - ((j-y) * sinr);
int NewYPixel = imRotate.rows/2 + ((i-x) * sinr) + ((j-y) * cosr);
if(NewXPixel < 0 || NewYPixel < 0 || NewXPixel >= imRotate.cols || NewYPixel >= imRotate.rows)
continue;
imRotate.at<unsigned char>(NewYPixel,NewXPixel) = im.at<unsigned char>(j,i);
}
}
}

关于c++ - 转换图像和旋转的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13000008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com