ওপেনসিভি কীভাবে দাবা বোর্ডের কোণগুলি খুঁজে পায়?


উত্তর:


12

ওপেনসিভির উত্স কোডটি উপলভ্য, তাই আমি কোডটি দিয়ে কিছুটা সময় নেওয়ার পরামর্শ দিই। এই নির্দিষ্ট ফাংশনের জন্য প্রাসঙ্গিক ফাইল হ'ল:

calib3d / src / calibinit.cpp

আমি এটিকে বিস্তারিতভাবে দেখিনি, তবে মনে হচ্ছে এটির মতো

CV_IMPL
int cvFindChessboardCorners( const void* arr, CvSize pattern_size,
                             CvPoint2D32f* out_corners, int* out_corner_count,
                             int flags )

এই পদ্ধতির মূল বাস্তবায়ন। এখানে তারা

  1. cvCheckChessboardছবিতে কোনও দাবাবোর্ড রয়েছে কিনা তা নির্ধারণ করতে ব্যবহার করুন
  2. বাইনারি (বিএন্ডডাব্লু) এ রূপান্তর করুন এবং কোণগুলি পৃথকীকরণে ডায়াল্ট করুন
  3. icvGenerateQuadsস্কোয়ারগুলি সন্ধান করতে ব্যবহার করুন ।

কোড তারপর যদিও চেক একটি সেট এই ঘনীভূত যেতে বলে মনে হয় quadsসহ দাবার ছক কোণে, এর icvFindConnectedQuads, icvCleanFoundConnectedQuadsঅতিরিক্ত কোণে, বাদ দিতে icvCheckQuadGroup, এবং icvCheckBoardMonotony

এই ফাংশন একই ফাইলের মধ্যে প্রয়োগ করা হয়, বাদে cvCheckChessboardযা হয় calib3d / src / checkchessboard.cpp । আপনি কোডটি কতটা ভালভাবে বুঝতে চেয়েছিলেন তার উপর নির্ভর করে, বেশ কয়েকটি ডিবাগিং লাইন রয়েছে বলে মনে হচ্ছে #define DEBUG_CHESSBOARD, এটি যদি অন্তর্ভুক্ত করা যায় তবে এটি আপনাকে কী ঘটছে তা দেখতে সহায়তা করতে পারে।


1
আপনার উত্তরের জন্য ধন্যবাদ. আমি জানি আমি এটি সন্ধান করতে পারি, তবে আমি উত্সাহী ছিলাম, তবে উত্স কোডের মধ্য দিয়ে যেতে যথেষ্ট উত্সাহী ছিলাম না। আমি আশা করি যে কেউ এই সময়টি বুঝতে পেরেছেন এবং নীতিগুলি ব্যাখ্যা করতে পারেন :)
গের্টেন

1
আমি একটি সুন্দরভাবে লিখিত কাগজ পেয়েছি ... এটি আরও একটি স্থিতিশীল এবং দ্রুততর (বিকল্প লেখকের মতে) গবেষণার
ফিলিপ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.