首先是我是初学者。 好的?
我已经阅读了相关的答案和问题,但请帮我解决这个问题:
如何在C ++中打开JPEG图像文件,将其转换为灰度图像,获取其直方图,将其调整为较小的图像,裁剪其特定区域或显示其特定区域?
对于这些任务,C或C ++一般更快吗?
哪些库最简单,最快? 运行时间非常重要。
谢谢。
这是一个使用magick库的例子。
读取图像,裁剪图像并将其写入新文件的程序(exception处理是可选的,但强烈建议):
#include #include 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类(和其他)。 这为您提供了打开,缩放,resize,裁剪,像素处理和其他任务的基本function。
否则你可以像已经说过的那样使用ImageMagick或OpenCV。 OpenCV为许多图像处理/图像识别任务提供了很多例子……
希望能帮助到你…
在C和C ++中有许多用于处理图像的好库,其中没有一个明显优于其他所有库。 OpenCV wiki , 项目页面对其中一些任务有很大支持,而ImageMagick wiki , 项目页面擅长其他任务。 JPEG组也有自己的JPEG处理函数实现。 这些可能是很好的资源; API文档可以更具体地指导您如何使用其中的每一个。
至于C或C ++库是否必然更快,两者之间没有明显的赢家。 毕竟,您始终可以使用C ++编译C库。 也就是说,由于语言的复杂性,C ++库往往有点难以接受,但是一旦你对语言有了良好的感觉,就会更容易使用。 (我对C ++有点偏见,所以一定要考虑来源)。 我建议您使用您认为更容易完成任务的任何语言; 这里也不是一个糟糕的选择,特别是如果表现很重要的话。
祝你的项目好运!
libgd是关于最简单,最轻量级的解决方案。
gdImageCreateFromJpeg gdImageCopyMergeGray gdImageCopyResized
哦,这都是C.
如果运行时间非常重要,那么你必须考虑将处理工作卸载到GPU芯片的图像处理库,例如:
需要了解更多c/c++开发分享使用C ++或C语言处理图像,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!
以上就是c/c++开发分享使用C ++或C语言处理图像相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/979944.html