2011-02-05 14 views
5

में छवियों के साथ काम करना पहली बात यह है कि मैं एक नौसिखिया हूं। ठीक है?सी ++ या सी

मैं संबंधित जवाब और सवाल पढ़ा है, लेकिन कृपया मुझे इस समस्या के साथ मदद:

मैं C++ एक JPEG छवि फ़ाइल कैसे खोल सकते हैं, यह एक ग्रेस्केल छवि में बदलने का, अपने हिस्टोग्राम मिलता है, के लिए यह आकार परिवर्तन एक छोटी छवि, इसका एक विशेष क्षेत्र फसल, या इसके एक विशेष क्षेत्र दिखाओ?

इन कार्यों के लिए, सामान्य रूप से सी या सी ++ तेज है?

कौन सी लाइब्रेरी सबसे सरल और तेज़ हैं? चलने का समय बहुत महत्वपूर्ण है।

धन्यवाद।

उत्तर

7

यहां 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; 
} 

check many more examples here

+0

आप तेजी से टाइप कर रहे हैं! मैं लगभग भी इस समाधान था। ;) – Paul

+0

अगली बार बेहतर भाग्य। :) – ayush

+0

आपके उपयोगी उत्तर के लिए वास्तव में धन्यवाद। एक दान: यह एक ऐसे आदमी के आने के करीब है जो सभी बंधनों से मानव को जोर देता है। – mohammad

2

सी और सी ++ में छवियों के साथ काम करने के लिए कई अच्छी पुस्तकालय हैं, जिनमें से कोई भी अन्य सभी के लिए स्पष्ट रूप से बेहतर नहीं है। ओपनसीवी wiki, project page इन कार्यों में से कुछ के लिए बहुत अच्छा समर्थन है, जबकि ImageMagick wiki, project page दूसरों पर अच्छा है। जेपीईजी समूह के पास जेपीईजी प्रसंस्करण कार्यों का अपना कार्यान्वयन भी है। ये शायद शुरू करने के लिए अच्छे संसाधन हैं; एपीआई दस्तावेज आपको इनमें से प्रत्येक का उपयोग करने के तरीके पर अधिक विशेष रूप से मार्गदर्शन कर सकता है।

चाहे सी या सी ++ पुस्तकालय तेजी से बाध्य हैं या नहीं, दोनों के बीच कोई स्पष्ट विजेता नहीं है। आखिरकार, आप सी ++ में हमेशा एक सी लाइब्रेरी संकलित कर सकते हैं। उस ने कहा, भाषा जटिलता के कारण सी ++ पुस्तकालयों को चुनने के लिए थोड़ा सा ट्रिकियर होता है, लेकिन भाषा के लिए एक अच्छा अनुभव प्राप्त करने के बाद उपयोग करना बहुत आसान होता है। (मैं सी ++ की तरफ थोड़ा पक्षपातपूर्ण हूं, इसलिए स्रोत पर विचार करना सुनिश्चित करें)। मैं आपको कार्य के लिए जो भी भाषा मिलती हूं, उसके साथ जाने की अनुशंसा करता हूं; न तो यहां एक बुरी पसंद है, खासकर अगर प्रदर्शन महत्वपूर्ण है।

आपकी परियोजना के साथ शुभकामनाएं!

2
अच्छी तरह से बुनियादी छवि जोड़तोड़ के लिए

आप कर सकते थे क्यूटी के क्यूमेज क्लास (और अन्य) को भी आजमाएं। यह आपको खोलने, स्केलिंग, आकार बदलने, क्रॉपिंग, पिक्सेल मैनिपुलेशन और अन्य कार्यों के लिए मूलभूत कार्यक्षमता देता है।

अन्यथा आप पहले ही कहा जा सकता है कि ImageMagick या OpenCV का उपयोग करें। OpenCV कई छवि हेरफेर/छवि मान्यता कार्यों के लिए इसके साथ उदाहरण के एक बहुत प्रदान करता है ...

आशा है कि यह मदद करता है ...

1

libgd सबसे आसान, सबसे हल्का वजन समाधान के बारे में है।

gdImageCreateFromJpeg 
gdImageCopyMergeGray 
gdImageCopyResized 

ओह, और यह सब सी है।

1

तो समय से चल रहा है जैसे वास्तव में महत्वपूर्ण बात यह है तो आप छवि प्रसंस्करण पुस्तकालय पर विचार करना चाहिए जो GPU चिप के प्रसंस्करण काम offloads, है:

+0

ओपनसीवी जीपीयू को ऑफ़लोड प्रसंस्करण करता है। – Pietro

संबंधित मुद्दे