يوليو 30
مكتبة كيوتي
|كتب المقالة:
العبدلي|
اطبع المقالة
|عدد المشاهدات : 1,829|
إذا ما أردت أن تقلل من استهلاكك للذاكرة أو إذا أردت أن تنقل ملف عبر الشبكة بشكل أسرع فإن Qt توفر لك إمكانية ضغط البيانات (byte array) ثم فك ضغطها , وتستعين Qt في ذلك بـمكتبة zlib .هذه العملية لا ينتج عنها ملف أرشيف zip يمكن فتحه ببرامج أخرى , بل هي فقط لضغط البيانات داخل البرنامج وتخزن في الذاكرة .تستخدم الدالة qCompress لضغط البيانات (byte array) وتستخدم الدالة qUncompress لفك ضغط البيانات (byte array) وتكون البيانات اما على شكل *uchar او على شكل QByteArray , وللضغط مستويات من 0 الى 9 كلما زادت القيمة قلت كمية البيانات بعد الضغط .
مثال ضغط بيانات لصورة ثم فك الضغط :
|
 |
1
2
3
4
5
6
7
8
9
10
11
12
13
| QImage image("c:/try/c3.jpg");
qDebug()<<image.byteCount();//44892
QByteArray compressed_arr=qCompress(image.bits(),image.byteCount(),9);//ضغط البيانات
/*
الوسيط الأول لبيانات الصورة وهي على شكل
uchar*
الوسيط الثاني لكمية هذه البيانات ,والثالث لمستوى الضغط (9) وهو الاعلى
*/
qDebug()<<compressed_arr.count();//33237
QByteArray uncompressed_arr= qUncompress(compressed_arr);//فك الضغط
qDebug()<<uncompressed_arr.count();//44892
QImage image2;
image2.loadFromData(uncompressed_arr);//انقل البيانات مفكوكة الضغط الى الصورة الجديدة |
لاحظ أنه بعد عملية الضغط تقلص حجم بيانات الصورة من 44892 إلى 33237 , الآن عرفنا كم هي مفيدة هذه التقنية …
يوليو 19
برمجة رسوميات
|كتب المقالة:
العبدلي|
اطبع المقالة
|عدد المشاهدات : 2,409|
مقدمة
openCV مكتبة متخصصة في “computer vision” وتتميز بأنها مفتوحة المصدر وتعمل على أنظمة linux و windows و mac ولقد تم كتابتها بلغة c/c++ وتدعم أيضا لغات أخرى python و rubi و matlab.
وتركز المكتبة على تطبيقات ال real time ,ويميزها سهولتها وإمكانية كتابة برامج كاملة عن طريقها وفي وقت قصير .وتتوفر للمكتبة أكثر من خمسمائة دالة تغطي مساحات عديدة للرؤية |
 |
تشمل فحص المنتج والتصوير الطبي والأمن وواجهة المستخدم ومعايرة الكاميرا والروبوتات…الخ.
ما هو الـ “computer vision” ؟
علم برمجي يهتم بطرق تحويل بيانات الصور والفيديو إلى معلومات وقرارات أو إعادة تمثيل هذه البيانات من جديد . وتكون المعلومات والقرارات على النحو التالي : “هل يوجد شخص في الصورة” أو “هل البصمات متطابقة في الصورتين”…الخ.أما إعادة تمثيل البيانات فتكون على النحو التالي: “تحويل الصورة الملونة إلى صورة رمادية” أو “إزالة حركة الكاميرا من الفيديو” …الخ. » للمزيد
مايو 06
مكتبة كيوتي
|كتب المقالة:
العبدلي|
اطبع المقالة
|عدد المشاهدات : 2,013|
مقدمة
تم توفير هذه الوحدة في الإصدار 4.6 من مكتبة Qt . يعرفها Qt Assistant بأنها وحدة توفر دوال منخفضة المستوى للتعامل مع تعدد الوسائط. وتنقسم إلى قسمين Audio و video .
هي ليست الوحدة الوحيدة للتعامل مع تعدد الوسائط فقبلها الوحدة phonon وهي تحوي دوال عالية المستوى ,ولكن ما يميز هذه الوحدة حقا هو أنها تمكنك من التعامل مع عتاد لم يكن بوسعك التعامل معها في phonon والأكثر جمالا |
 |
أن QtMultimedia سوف تصبح الوحدة الأولى للتعامل مع ال multimedia في مكتبة Qt4.7 وذلك بتوفير دوال ذات مستوى عالي وأخرى منخفضة المستوى جنبا إلى جنب في الوحدة.
QtMultimedia-audio :
بالإضافة إلى فضاء الأسماء (QAudio) المتوفر بها معظم الثوابت الرقمية تمثل QtMultimedia-audio فئتين رئيسيتين QAudioInput (إدخال) و QAudioOutput(إخراج) , وأيضا تتوفر الفئة QAudioFormat للتحديد صيغ البيانات الصوتية لكلا من QAudioInput و QAudioOutput , وآخر فئة هي QAudioDeviceInfo للاستعلام عن عتاد الصوت .عموما قبل الغوص في QtMultimedia-audio دعنا نفهم طريقة تمثيل بيانات الصوت في الكمبيوتر .
» للمزيد
أبريل 29
مكتبة كيوتي
|كتب المقالة:
العبدلي|
اطبع المقالة
|عدد المشاهدات : 1,759|
وهذه الطريقة لا تصلح في حال كان هناك دالة تابعة لكائن (أو مستقلة)في اللغة النصية تعيد كائن من النوع A في الحقيقة لن تستطيع بيئة اللغة النصية التعرف على هذا الكائن(class) المعاد من الدالة الذي هو من النوع A لأنه مازال نوع سي++ لم نقم بتغليفه .
مثال عن الخطأ
1
| qDebug()< <engine.evaluate("w.getPoint();").toString();//TypeError: cannot call getPoint(): unknown return type `A' (register the type with qScriptRegisterMetaType()) |
من قراءتك للمشكلة لعلك عرفت ماهو الحل !!
وفرت Qt الدالة qScriptRegisterMetaType لتقوم بحل هذا الجزء من المشكلة بعد عدة خطوات. » للمزيد
أحدث التعليقات