首先,我是一个初学者。好吗?
我已经阅读了相关的答案和问题,但请帮助我解决以下问题:
如何在C++中打开一个JPEG图像文件,将其转换为灰度图像,获取其直方图,将其调整为较小的图像,裁剪其中的特定区域或显示其中的特定区域?
对于这些任务,一般来说,C或C++哪个更快?
哪些库最简单、最快?运行时间非常重要。
谢谢。
首先,我是一个初学者。好吗?
我已经阅读了相关的答案和问题,但请帮助我解决以下问题:
如何在C++中打开一个JPEG图像文件,将其转换为灰度图像,获取其直方图,将其调整为较小的图像,裁剪其中的特定区域或显示其中的特定区域?
对于这些任务,一般来说,C或C++哪个更快?
哪些库最简单、最快?运行时间非常重要。
谢谢。
这里有一个使用magick库的例子。
这个程序可以读取一张图片,将其裁剪并写入新文件(异常处理是可选的,但强烈建议):
#include <Magick++.h>
#include <iostream>
using namespace std;
using namespace Magick;
int main(int argc,char **argv)
{
// Construct the image object. Seperating image construction from the
// the read operation ensures that a failure to read the image file
// doesn't render the image object useless.
Image image;
try {
// Read a file into image object
image.read( "girl.jpeg" );
// Crop the image to specified size (width, height, xOffset, yOffset)
image.crop( Geometry(100,100, 100, 100) );
// Write the image to a file
image.write( "x.jpeg" );
}
catch( Exception &error_ )
{
cout << "Caught exception: " << error_.what() << endl;
return 1;
}
return 0;
}
对于基本的图像操作,您也可以尝试使用Qt的QImage类(和其他类)。这为您提供了打开、缩放、调整大小、裁剪、像素操作和其他任务的基本功能。
否则,您可以如已经提到的使用ImageMagick或OpenCV。OpenCV为许多图像操作/图像识别任务提供了很多示例...
希望对您有所帮助...