في OpenCV ، يوجد مرشح Scharr بالتزامن مع تشغيل مشغل Sobel. عندما يكون Sobel kernel 3 ، قد تنتج النتيجة أخطاء أكثر وضوحًا. استجابة لهذه المشكلة ، يوفر OpenCV وظيفة Scharr. تستهدف هذه الوظيفة فقط نواة الحجم 3 ، ومعدل الحساب أسرع من وظيفة Sobel ، والنتيجة أكثر دقة ، لكن مقاومة الضوضاء ليست جيدة مثل وظيفة Sobel.
استخدم مرشح Scharr لحساب اختلاف الصورة في اتجاه X أو Y ، ومتغيرات المعلمة الخاصة به هي نفسها Sobel.
الوظيفة: imgproc.scharr (MAT SRC ، MAT DST ، int ddepth ، int dx ، int dy ، double delate ، double delta ، int bordype)
وصف المعلمة:
SRC: صورة المصدر
DST: صورة الاكتشاف
DDEPTH: عمق صورة الإخراج
DX: ترتيب الفرق في اتجاه x
DY: ترتيب الفرق في اتجاه y
المقياس: عامل التحجيم
دلتا: قيمة دلتا اختيارية قبل تخزين النتيجة في صورة الإخراج ، الافتراضي هو 0
BorderType: وضع الحدود ، Border_Default الافتراضي
نموذج الرمز:
public static void main (string [] args) {system.loadlibrary (core.native_library_name) ؛ MAT SRC = IMGCODECS.IMREAD ("F: //2011031213205880528.jpg") ؛ MAT DST = src.clone () ؛ MAT DSTX = src.clone () ؛ MAT DSTY = src.clone () ؛ imgproc.gaussianblur (SRC ، DST ، الحجم الجديد (3 ، 3) ، 0) ؛ imgproc.cvtcolor (DST ، DST ، imgproc.color_rgb2gray) ؛ imgproc.scharr (dst ، dstx ، -1 ، 1 ، 0 ، 1 ، 0 ، core.border_default) ؛ imgcodecs.imwrite ("f: //dstx.jpg" ، dstx) ؛ imgproc.scharr (dst ، dsty ، -1 ، 0 ، 1 ، 1 ، 0 ، core.border_default) ؛ imgcodecs.imwrite ("f: //dsty.jpg" ، dsty) ؛ core.addweighted (dstx ، 0.5 ، dsty ، 0.5 ، 0 ، dst) ؛ imgcodecs.imwrite ("f: //dst.jpg" ، dst) ؛ } صورة المصدر:
شار في اتجاه x:
شار في الاتجاه y:
بعد دمج التدرجات:
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.