C++ 在C+中处理图像+;或C
首先,我是一个初学者。好吧 我已经阅读了相关的答案和问题,但请帮助我解决这个问题: <如何在C++中打开JPEG图像文件,将其转换成灰度图像,获取直方图,将其调整为较小的图像,裁剪特定区域,或显示特定区域? 对于这些任务,C或C++一般都更快吗?< /P> 哪些库最简单、最快?运行时间非常重要C++ 在C+中处理图像+;或C,c++,c,image-processing,C++,C,Image Processing,首先,我是一个初学者。好吧 我已经阅读了相关的答案和问题,但请帮助我解决这个问题: 哪些库最简单、最快?运行时间非常重要 > P/> < P>有很多很好的库用于处理C和C++中的图像,它们都没有明显优于其他所有的库。OpenCV对其中一些任务有很好的支持,而ImageMagick则擅长于其他任务。JPEG组也有自己的JPEG处理功能实现。这些可能是良好的资源开始;API文档可以更具体地指导您如何使用这些工具 至于C或C++库是否注定要更快,两者之间没有明确的赢家。毕竟,你可以在C++中编译C
> P/> < P>有很多很好的库用于处理C和C++中的图像,它们都没有明显优于其他所有的库。OpenCV对其中一些任务有很好的支持,而ImageMagick则擅长于其他任务。JPEG组也有自己的JPEG处理功能实现。这些可能是良好的资源开始;API文档可以更具体地指导您如何使用这些工具 <>至于C或C++库是否注定要更快,两者之间没有明确的赢家。毕竟,你可以在C++中编译C库。也就是说,C++库由于语言复杂而有点难学,但一旦你对语言有了良好的感觉,就更容易使用。(我有点偏向C++,所以一定要考虑源代码)。我建议你使用任何你觉得更容易完成任务的语言;在这里两者都不是一个坏的选择,尤其是在性能很重要的情况下 祝你的项目好运 下面是一个使用库的示例 读取图像、裁剪图像并将其写入新文件的程序(异常处理是可选的,但强烈建议):
#包括
#包括
使用名称空间std;
使用名称空间Magick;
int main(int argc,字符**argv)
{
//构造图像对象。将图像构造与图像对象分离
//读取操作可确保无法读取图像文件
//不会使图像对象无效。
图像;
试一试{
//将文件读入图像对象
image.read(“girl.jpeg”);
//将图像裁剪到指定的大小(宽度、高度、xOffset、yOffset)
裁剪(几何体(100100100100));
//将图像写入文件
image.write(“x.jpeg”);
}
捕获(异常和错误)
{
对于基本的图像处理,您也可以尝试Qt的QImage类(和其他)。这为您提供了打开、缩放、调整大小、裁剪、像素处理和其他任务的基本功能
否则,您可以使用ImageMagick或OpenCV。OpenCV为许多图像处理/图像识别任务提供了许多示例
希望有帮助。是最简单、重量最轻的解决方案
gdImageCreateFromJpeg
gdImageCopyMergeGray
gdImageCopyResized
哦,都是C.
< P>如果运行时间是很重要的事情,那么你必须考虑将处理任务卸载到GPU芯片上的图像处理库,如:
OpenCV将处理卸载到GPU。
gdImageCreateFromJpeg
gdImageCopyMergeGray
gdImageCopyResized