翻转图像水平C
Flipping Image horizontally C++
我对翻转有问题,因为仅显示正确的部分,其余的图片只是灰色。
![Lena FLipped][1]
Image *im2 = new Image();
im2->CloneImage(image);
unsigned int sizeX = im2->GetSizeX();
unsigned int sizeY = im2->GetSizeY();
for(int x = 0; x < sizeX/2;x++){
for(int y = 0;y < sizeY;y++ ){
Image::PixelType pix = im2->GetPixel(x,y);
im2->SetPixel(x,y,sizeX-x-1);
im2->SetPixel(sizeX-x-1,y,pix);
}
}
ImageIO::Write( "flip.pgm", im2 );
im2->SetPixel(x,y,sizeX-x-1);
是错误的,您需要设置颜色:
Image::PixelType pix1 = im2->GetPixel(x,y);
Image::PixelType pix2 = im2->GetPixel(sizeX-x-1,y);
im2->SetPixel(x,y,pix2);
im2->SetPixel(sizeX-x-1,y,pix1);
您在这些行中做什么:
Image::PixelType pix = im2->GetPixel(x,y);
im2->SetPixel(x,y,sizeX-x-1);
im2->SetPixel(sizeX-x-1,y,pix);
您应该记住两个像素值,然后交换它们。将像素设置为sizeX - x - 1
的想法是什么?
您需要执行两个像素的完整交换,而不仅仅是覆盖值 - 灰色来自这一行:
im2->SetPixel(x,y,sizeX-x-1);
在哪里提供两个X坐标,没有像素值。更正的循环:
for(int x = 0; x < sizeX/2;x++){
for(int y = 0;y < sizeY;y++ ){
Image::PixelType pix = im2->GetPixel(x,y);
im2->SetPixel(x,y,im2->GetPixel(sizeX-x-1,y));
im2->SetPixel(sizeX-x-1,y,pix);
}
}
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 将"打开的CV图像"中的"颜色"转换为整数格式
- QTableView:endMoveRows在模型中重置水平页眉大小
- 平均图像时图像损坏
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- Vulkan验证层不断在VkQueuePresentKHR()上抛出图像布局错误
- 使用FFMPEG将RGB图像序列保存到.mp4时出现问题
- 将RGB图像保存为PPM格式
- 将图像添加到资源文件夹UWP C++
- QScrollArea:由垂直滚动条引起的水平滚动条
- 彩色图像的卤化物处理平均值
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 在 SDL 中水平减小静态图像进度条
- 滚动条缩略图跟踪长度 基于图像的水平适合调整窗口大小时出现问题
- 翻转图像水平C
- 图像处理项目的照片中照明水平变化的样本
- 图像水平调整算法