Monday, June 3, 2013

অ্যালগরিদম

বাছাই ক্রমিকরণ  (selection sort)

সকলকে সাজাইয়া বাম থেকে ডানে
ছোটটাকে খুঁজে নিয়ে চেপে ধরো কানে
হড়হড় করে টেনে সমুখে আনিয়া
সাজাইয়া রাখো তারে অনুক্রম দিয়া
এর পরে বাকিদের থেকে ছোটটাকে
চাপকানা দিয়ে পরে চেপে ধরো নাকে
আলগোছে টেনে নিয়ে অনুক্রম পরে
বসাইয়া দাঅ তারে মজবুত করে
এভাবেই বাকিদের থেকে একে একে
উঠাইয়া আনো সবচেয়ে ছোটটাকে
অনুক্রমে বসাইয়া ফিরিও আবার
সকলকে একে একে করিও সাবাড়
যখন দেখিবে আর বাকি কেহ নাই
বাছাই ক্রমিকরণ শেষ হলো তাই।


বুদবুদ ক্রমিকরণ (bubble sort)

এবারে তুলনা হবে জোড়ায় জোড়ায়
তুলনার শুরু হবে সবার গোড়ায়
প্রথমে zআ আছে লেখা দ্বিতীয়ার সাথে
তুলনা করিয়া রাখি বড়টাকে হাতে
তাহা যদি আমাদের দ্বিতীয়া না হয়
আগু পিছু করে দেব ক্রম বদলায়
প্রথমটা বাদ রেখে দ্বিতিয়াকে নিয়ে
জোড়া তৈয়ার করি পরেরটা দিয়ে
এভাবেই ক্রম মেনে সবগুলো জড়া
তুলনা-বদল করে দেব আগাগোড়া
যখন দেখিব জোড়া বাকি নাহি আর
তখনই সময় জানি শুরুতে ফেরার
বারে বারে ফিরে ফিরে শুরু থেকে শেষে
তুলনা-বদল করে দেব অনায়েসে
যতটি সংখ্যা ছিলো আদি তালিকার
ততবার ফেরা হলে ফিরিবোনা আর।


একত্রি ক্রমিকরণ (Merege sort) {অসম্পূর্ণ}

একক উপাদানের তালিকা যদি পাও
সেটাকেই তুলে নিয়ে উত্তর দাও
নইলে তালিকাটাকে কপাত করিয়া
কেটে দুইভাগ করো মাঝখান দিয়া
দুভাগের উপরেই একই কার্যকরণ
সম্মপন্ন করো একত্রি ক্রমিকরণ
(এ থেকে পাওয়া দুটি ক্রমতালিকাকে
মিলেমিশে একত্র করো একে একে
দু-তালিকাশীর্ষের ছোটটাকে নিয়া
পাশাপাশি সাজাইও অনুক্রম দিয়া)
এই ভাবে বারে বারে দুতালিকা থেকে
ছোটোশীর্ষটি নিয়ে রাখো একে একে।
অনুক্রম প্রস্তুতি শেষ হবে যখন
(এভাবে তালিকা করা শেষ হবে যখন)
সম্পন্ন হবে একত্রি ক্রমিকরণ।




Friday, December 14, 2012

সমঝতা

নিজের সাথে সমঝতায় আসতে চাচ্ছি। তার জন্য কী কী স্কিল দরকার ভাবি-

১)  টাস্ক সুইচিং দ্রুত করতে পারতে হবে।
২) মিউজিক, ওয়াটারকালার, ফ্রেঞ্চ। এই তিনটা জিনিস শিখতে চাই। সমস্যা হলো, আজকাল চিন্তা কম করছি বলে মনে হচ্ছে। গরুর মত খেটে লাভ নেই।
৩) লেখালিখি, নিয়মিত বিরতিতে চলতে থাকবে। তবে ফিকশন লেখা হয়ে উঠছে না। কিশোরসাহিত্য লেখা দরকার। দেখি কী করা যায়। আমার মনে হয়, টাস্ক সুইচিং এর ইফিসিয়েন্সি বেড়ে গেলে এসব করার সময় মিলে যাবে হাতে।
৪) বেশ কিছুদিন বইটার নতুন কোনো চ্যাপ্টার লেখা হয়নি। প্রোগ্রামিং নিয়ে চ্যাপ্টারটা শেষ করে ফেলবো।
৫) আমি বুঝতে পেরেছি, আমার সব সৃষ্টিশীল চিন্তাভাবনাগুলো আসে এক ধরনের নীরবতা থেকে। পাঠকদের সাথে বেশি ইন্টারঅ্যাকশন এতে বিঘ্ন ঘটায়। এছাড়াও লেখা সম্পর্কে পাঠকের মন্তব্য নিয়ে বেশী অ্যাটাচ্ড হয়ে পড়লে পরবর্তী সৃষ্টি বিঘ্নিত, বা বিলম্বিত হয়।
৬) আমাকে বুঝতে হবে আমি একজন ব্যস্ত মানুষ।
৭) কোনো একটা কিছু ঠিকঠাক সম্পন্ন করার পরে সে বিষয়ে অন্যদের মন্তব্য কনসিডার করতে হবে। কিন্তু ইমিডিয়েটলি নয়। এক মাস পরে (শুরুতে এই বিলম্ব ১ সপ্তাহ রাখার চেষ্টা করবো)। কারণ তাৎক্ষণিক ভাবে ফিরে তাকালে, নিজের দৃষ্টিতেও লেখাটাকে নিরপেক্ষভাবে যাচাই করা সম্ভব হয় না। পাঠকের যুক্তিপূর্ণ সমালোচনাও তখন খুব একটা ফলপ্রসু হয় না বলে মনে করি।
৮) একটা দিন অনেক অনেক বড় সময়। কিন্তু দিনের দৈর্ঘ্য সময়ের এককে মাপা বোকামি।
৯) লেখার গতি বাড়াতে হবে। আমি "দুই হাতে লেখা" নামে যে সিরিজটি চালাতাম সেটা অনেক সাহায্য করেছে। দ্রুত লিখলে লেখায় কোহেরেন্স থাকে। লেখায় কৃত্রিমতা ঠাই নেওয়ার সুযোগ পায় না। গল্প তার নিজের প্রাণের টানেই নানান মোড় নেয়। লেখাটা তখন আর খাটুনির কাজ মনে হয় না। দারুণ একটা অভিজানের মত হয়। কারণ নেক্সট কী আসছে সেটা হয়তো আমি নিজেও জানি না।
১০) "আবজাব" সিরিজটা আমাকে খুব সাহায্য করেছে এক সময়। মনটাকে মুক্ত করতে আবজাব যা মনে আসে, নির্দিধায় লিখে ফেলার বিকল্প নেই।
১১) গণিত। গণিতে পিছিয়ে পড়ছি। এরও মূল কারণ আমি যথেষ্ট ভাবছি না, তাই। ভাবলে ভাবনার ক্যাপাসিটিও বাড়ে।
১২) আর কোয়ান্টাম জগৎএ এখনো নিজের পরিচয় স্পষ্ট করতে পারিনি। আমার সুপারভাইজর মনে হয় কনফিউজড। এই কনফিউশন অনতিবিলম্বে দূর করতে হবে।

এই তালিকার টিপ্সগুলো ভালো লাগলো, এখানে যোগ করে রাখি
http://writersalmanac.publicradio.org/index.php?date=2012/05/30

Monday, November 19, 2012

প্রতিটি শব্দ থেকে চিহ্নিত করার উপযুক্ত বর্ণ, বর্ণাংশ বা বর্ণসমস্টি পৃথকীকরণ

বাংলার ক্ষেত্রে আমাদের চ্যালেঞ্জ ছিলো মাত্রা নিয়ে। আমাদের স্ক্যান করা পাতাটি দেখি,


এভাবে মাত্রা দিয়ে শব্দের অক্ষরগুলো যুক্ত থাকে বলে তাদেরকে কম্পিউটারের পক্ষে আলাদা করা খুবই মুশকিল হয়ে যায়। ইংরেজী বা ল্যাটিন হরফে লেখা ভাষায় সে সমস্যা নেই। তো এই সমস্যা থেকে উত্তরণের জন্য গত পর্বে আমরা দারুণ একটা বুদ্ধি করে শব্দের মাত্রাগুলো নির্ণয় করে ফেলেছি। কিন্তু গত ধাপে প্রাথমিক ভাবে পাওয়া মাত্রাগুলোতে তখনও খুত ছিলো। ছবিতে দেখি 

এ পর্বে আমরা সেই খুত দূর করতে পেরেছি। ব্যাপারটা এক ধরনের বাছাই এবং শূন্যস্থান পূরণ এর মিশ্র প্রক্রিয়া। ফলাফল হিসাবে একেবারে সলিড মাত্রাগুলো পেয়েগেলাম। নিচের ছবিতে বক্স দিয়ে শব্দগুলো অবস্থান আর মোটা দাগ দিয়ে তাদের মাত্রার অবস্থান দেখানো হয়েছে। 

এখন যেহেতু কম্পিউটার প্রতিটি শব্দের মাত্রা চিনে গেছে। সেহেতু স্রেফ সেগুলো মুছে ফেললেই মাত্রা সঙ্ক্রান্ত জটিলতা কাটিয়ে ওটা যাবে। দেখা যাক, মাত্রা মুছে ফেলার পরে কম্পিউটার পৃষ্ঠাটিকে কেমন দেখছে। 


আমরা যেহেতু আগেই প্রতিটি শব্দের অবস্থান সুনির্দিষ্টভাবে নির্ণয় করে ফেলেছি। সেহেতু এখন, এই মাত্রা মুছে ফেলা প্রতিটি শব্দ ধরে ধরে সেখান থেকে চিহ্নিতকরণের উপযুক্ত চিহ্ন (মানে ফিচার) গুলো আলাদা করতে পারবো। দেখুন ফলাফল আসলো কেমন। 



চমৎকার! এবার স্রেফ এই খুদে খুদে টুকরোগুলোকে, আর্টিফিশিয়াল নিউরাল নেটওয়ার্ক, অথবা সাপোর্ট ভেক্টর মেশিন অথবা আমার নিজস্ব একটা অ্যালগরিদম এর মধ্যে ছেড়ে দিলেই হবে। তবে একেবারে নতুন কোনো অ্যালগরিদমও আবিষ্কার করার প্রয়োজনীয়তা দেখা দিতে পারে। ইন ফ্যাক্ট আমার পরিকল্পনা হচ্ছে একই সঙ্গে এসবের একটা মিশ্র পদ্ধতি প্রয়োগ করা। এখন আর সে সব বর্ণনায় না যাই।

খেয়াল করলে দেখা যাবে। ই-কার বা ঈ- কার কে চিহ্নিত করা হয়নি। আসলে ওগুলোও করা হয়ে গেছে। স্রেফ অনেক রাত (আসলে ভোর) হয়ে যাওয়ায় ওসব আর গুছিয়ে পোস্টে দিচ্ছি না। এ ছাড়াও "তে",  "দৃ" এর মত কিছু বর্ণ সমষ্টি এক সঙ্গে রয়ে গেছে। এতে কোনোই সমস্যা নেই। কম্পিউটারকে শিখিয়ে দিতে হবে। যে ঐ ধরনের আকার দেখলেই সেটাকে সে একক বর্ণ না ভেবে নির্দিষ্ট বর্ণসমস্টি হিসাবেই ভাববে। 

যাই হোক, কাজটা সহজ হবে না। অবশ্য সহজ হলে করে মজা পেতাম না। 

Sunday, November 18, 2012

শব্দের মাত্রা নির্ণয়

আগের ধাপে আমরা স্ক্যান করা পাতা থেকে শব্দগুলোকে আলাদা করতে পেরেছি। বাংলা শব্দে বর্ণগুলো যেহেতু মাত্রা দিয়ে যুক্ত থাকে, সেহেতু বর্ণগুলোকে সহজেই আলাদা করা যায় না। ইংরেজী বা ল্যাটিন হরফের ক্ষেত্রে এই ঝামেলা নেই। এখন আমরা যদি শব্দ থেকে কোন দাগটি মাত্রা তা নির্ণয় করতে পারি তাহলে পরে বর্ণগুলোকে আলাদাভাবে চিহ্নিত করতে সুবিধা হয়। কারণ মাত্রাটা বাদ দিয়ে ফেললে, ইংরেজীর মত করেই বর্ণগুলোকে আলাদা করা সম্ভব হবে!

তো এই মাত্রা নির্ণয় করতে কি করলাম একটু আগে, সেটাই এখানে লিখি।

আমাদের স্ক্যান করা পাতাটা এমন

এখান থেকে আগের পর্বে আমরা কিছু ঘসা মাজা করে একটা ইনভার্টেড সাদাকালো ছবি তৈরি করেছিলাম। ঐ ছবিটাই এই ধাপের ইনপুট।


মাত্রা নির্ণয়ের অপারেশনটা পরে প্রতিটি শব্দের জন্য আলাদা আলাদা ভাবে করবো। আপাতত দ্রুত প্রোটোটাইপ বানানোর জনে। পুরো ছবিতেই এক সঙ্গে করছি। ব্যাপারটা স্রেফ একটু চালাকি। যেমন এই ছবিটাকে যদি ধরে ডানেবামে ঘসাঘসি করি তাহলে মাত্রার অংশটা নিজের সাদার উপরেই থাকবে। তাই তার গাড়ত্ব কমবে বাড়বে না। ওদিকে মাত্রা ব্যতিত অন্য দাগগুলো যেহেতু আনুভূমিক নয়, এরা ডানেবামে ঘসা খেলে ঝাপসা হয়ে যাবে। আমরা এখানে আনুভুমিক ভাবে ৯ পিক্সেল পর্যন্ত ঘসাঘসি করলাম ফলে ছবিটা দাঁড়ালো অনেকটা এমন,


ছবিটার উপর ক্লিক করে বড় করে দেখলে লক্ষ্য করবেন যে মাত্রার অংশ অন্য অংশের তুলনায় বেশি সাদা। এখন একটা নির্দিষ্ট থ্রেশহোল্ডের নিচে সবকিছুকে কালো করে দিলে পাবো


কী চমৎকার ভাবে মাত্রাগুলো পেয়ে গেছি! এখন বোঝার জন্য আমাদের আগের ইনপুটের ছবির উপর এই মাত্রাগুলো ভিন্ন রঙএ আঁকি।


বাস! হয়ে গেলো। আমরা আগের ধাপে প্রতিটি শব্দকে লাল বাক্স দিয়ে ঘিরে দিয়েছিলাম। এখন এই পার্পল দাগগুলো পেয়ে যাওয়ায়, পুরো মাত্রা ঠিক ঠিক বের করে ফেলবো। টুকি টাকি খুত এখানে কোনো বাধাই সৃষ্টি করবে না।

তার মানে এখন এই মাত্রাজ্ঞান ব্যবহার করে শব্দের বর্ণগুলোকে কেটে ফেলতে হবে। আর তার পর সেই কাটা অংশগুলো চিহ্নিত করতে পারলেই হয়ে গেল! আমাদের "দৃশ্যমান অক্ষর চিহ্নিতকরণ প্রকল্প" তার প্রোটো টাইপ স্তর পারকরবে তখন। 

তবে সাধারণ ব্যবহারকারীদের জন্য সফ্টওয়্যার হিসাবে তৈরি করতে যেতে হবে অনেকদূর। অত দূর আমি ভাবতে পারি না। 

এখন শুধু একটাই চিন্তা। পরের ধাপে কী করা যায়! 

Saturday, November 17, 2012

স্ক্যান করা বইয়ের পাতা থেকে শব্দগুলোর অবস্থান নির্ণয়

আগের পোস্টে দেখেছি কীভাবে স্ক্যান করা পাতাকে ঘুরিয়ে লাইনগুলোকে আনুভূমিক করা যায়। আজকের ধাপে আমরা প্রতিটি শব্দকে আলাদা আলাদাভাবে কেটে ফেলতে চাই। পরে একটা একটা করে শব্দ নিয়ে কাজ করা যাবে।

এ কাজে ইনপুট হিসাবে আমরা ব্যবহার করছি একটা সত্যিকারের বইয়ের স্ক্যান করা পাতা। শাহরিয়ার কবিরের লেখা জাহানারা ইমামের শেষ দিনগুলি বইটির ৬১ তম পৃষ্ঠার প্রথম প্যারা।

পাতাটি দেখতে বেশ ঝক ঝকে হলেও আসলে এর মধ্যে অনেক রকম খুত আছে, যেটা আমাদের কম্পিউটারকে বোকা বানিয়ে দিতে পারে। সেগুলো কেমন? একটু হিস্টোগ্রাম ইকুয়ালাইজ করে দেখি।


এটা করার ফলে, যদিও অনেক রকম খুত চোখে পড়ছে, একই সঙ্গে মূল লেখাটা আরো গাড় হয়ে গেছে। তাই আমরা এর থেকে শুধু গাড় পিক্সেলগুলো রেখে বাকি সব ফেলে দেব। কাজটা করব থ্রেশহোল্ড ফাংশনের সাহায্যে। একই সংগে ছবিটির রঙও উল্টে করে ফেলবো। 


সবকিছু একেবারে সাদা কালোয় নিয়ে এলাম। এখানে পিক্সেলগুলোর মান হয় ২৫৫ (সাদা) অথবা ০ (কালো)। এখন লাইনগুলো আলাদা করা একেবারে সহজ।

এই ছবিতে প্রতিটি লাইনের উপরে আর নীচে একটা করে দাগ দেওয়া হয়েছে। কাজটা করতে পুরো ছবিটাকে একটা ম্যাট্রিক্স ভেবে নিয়ে সেটাকে এর প্রস্থের সমান একটা বিশেষ ভেক্টরের সাথে গুন দিইয়েছি। ভেক্টরটির প্রতিটি ইলিমেন্ট ১। ফলে আমরা আউটপুটে এই ছবির উচ্চতার সমান একটা ভেক্টর পাবো, যার প্রতিটি ইলিমেন্ট ঐ লাইন বরাবর কত্টি পিক্সেল সাদা সেটা নির্দেশ করে। সেখান থেকে লাইনগুলো বোঝা যায়। একইভাবে শব্দগুলোও নির্ণয় করে ফেলি।


এখন কোথাথেকে কতটুকুর মধ্যে শব্দগুলো আছে তা আমরা পেয়ে গেছি। এখন মূল ছবিতে শব্দগুলোকে লাল রঙের বক্সে বন্দী করে ফেলি। 

চমৎকার! সহজ কাজগুলো মোটামুটি ভালোভাবেই হয়ে গেল। এখন ইন্টারেস্টিং ব্যাপার স্যাপার শুরু হবে। মানে প্রতিটি শব্দ থেকে বর্ণগুলো আলাদা করতে হবে। এবং নির্ণয় করতে হবে কোন বর্ণটি আসলে কী। আমরা ইংরেজী তে এ ধরনের প্রোগ্রাম দেখেছি। ওদের লেটারগুলো আলাদা আলাদা থাকে বলে কাজ অনেক সহজ হয়ে যায়। আমাদের শব্দে বর্ণগুলো মাত্রা দ্বারা যুক্ত। ফলে এদেরকে আলাদা করতে কম্পিউটারের কৃত্রিম বুদ্ধিমত্তাকেও অনেক বেশি বুদ্ধিমান হতে হবে।

ভাবতেই ভালো লাগছে যে সেই বুদ্ধিটা দিতে হবে আমাকেই!

সংযুক্তি: থ্রেশহোল্ডের মান পালটে একই কোড দিয়ে বর্ণগুলোকেও আলাদা করা যায়। যদিও তখন খুব একটা রোবাস্ট হয় না। এখানে তেমন একটা টেস্ট কেসের রেজাল্ট টাঙ্গিয়ে রাখি।

Wednesday, November 14, 2012

আঁকা-বাঁকা ভাবে স্ল্যান করা পাতা সোজা করার পদ্ধতি

স্ক্যান করার সময় পাতা একটু এদিক ওদিক কাত হয়ে  যেতেই পারে।
মনে করি আমাদের স্ক্যান করা পাতাটি এমন।

এখন, এই অবস্থায় স্ক্যান করা পাতা থেকে টেক্স্ট রিকগনিশন করা মুশকিল হয়ে যাবে। ওদিকে কম্পিউটারের কাছে একটা ছবি কিছু কালো আর সাদা ফোটার সমষ্টি ছাড়া কিছুই নয়। সে কীভাবে বুঝবে কোন দিকে কতটুকু ঘোরালে লেখাগুলো সোজা হবে?

এটা করতে আমরা ব্যবহার করবো ডিস্ক্রিট ফুরিয়ার ট্রান্সফর্ম। তখন যে ফলাফল পাওয়া যাবে সেটা দেখতে এমন।
দেখুন মাঝ খানে একটা সাদা দাগ দেখা যাচ্ছে। ওর মানে হলো ঐ বরাবর হাটলে বারবার সাদা থেকে কালোতে বদলায় পিক্সেলগুলো। এই দাগটা কতডিগ্রি কোনে আছে বের করতে পারলেই ততটুকু উলটো ঘুরিয়ে নিলে কাজ হয়ে যাবে। কিন্তু এই ছবিতে নানান রকম হিজিবিজি ঝিরিঝিরি। এতকিছুর মধ্যে কোন সাদা বিন্দুগুলো কাজের সেটা কম্পিউটারের পক্ষে বোঝা মুশকিল। বাড়তি বিন্দু গুলো দূর করতে তাই, আমরা একটা এজ ডিটেকশন অ্যালগরিদম চালাবো। এই অ্যালগরিদম ছবির যেসব অংশ বেশি বেশি সাদা সেগুলোকে দাগ দিয়ে ঘিরে ফেলে, আর বাকি অংশ মুছে কালো করে দেয়। ফলাফল দাঁড়ায় এমন।  অনেকটা ফটোশপের ম্যাজিক সিলেক্টর টুলের মত। এখানে বলে রাখি, ফুরিয়ার ট্রান্সফর্ম করার সুবিধা হলো, ছবিতে যদি কাটা ছেড়া, পোকামাকড়, কাগজে চায়ের কাপের দাগ, ইত্যাদি থাকে তার পরেও, ঠিকই আমাদের উদ্দিষ্ট সাদা দাগটা আমরা পেয়ে যাবো!
 এখন অন্যসব হিজিবিজির মধ্যে মাঝের দাগটা বেশ ফুটে উঠেছে! কিন্তু ছবিটাকে স্রেফ একটা কালো গ্রাফ কাগজে সাদা সাদা অনেকগুলো বিন্দু ভাবা যেতে পারে। এদের কোন বিন্দুগুলোকে যোগ করলে সবচেয়ে প্রকট রেখাটা পাওয়া যাবে সেটা সুক্ষ্মরূপে নির্নয় করতে। আমরা ব্যবহার করব হাফ ট্রান্সফর্ম। ফলাফল পাওয়া যাবে এমন।
চিত্রের এই লাল রেখাটা পোলার ফর্মে পাওয়া যায়। ফলে সে কতরেডিয়ান কোনে আছে সেটাও আমরা পেয়ে যাবো একটা ভেরিয়েবলের মধ্যে। এখন মূল ছবিটাকে স্রেফ তত খানি উলটো দিকে ঘুরিয়ে নিলেই হলো।
বাহ! কেমন সোজা হয়ে গেছে। কোনার দিকে একটু কাটা পড়েছে অবশ্য। ওসব অংশ ছবিটার আকার বাড়িয়ে কমিয়ে ধরে ফেলা যাবে।   প্রোগ্রামটা যেহেতু একবার লিখে ফেলেছি। এখন যে কোনো পাতা যেভাবেই, স্ক্যান করে দেওয়া হোক না কেন। এই প্রোগ্রামের হাতে পড়লে ঠিক ঠিক সোজা হয়ে যাবে।

পাইথন আর ওপেনসিভি লাইব্রেরী ব্যবহার করার কারণে এসব করতে তেমন কোনো কষ্টই হয়নি। তবে, এই ডিস্ক্রিট ফুরিয়ার ট্রান্সফর্ম, হাফ-ট্রান্সরর্ম, এবং এজ ডিটেকশন অ্যালগরিদমগুলোর গাণিতিক সৌন্দর্য অতুলনীয়। হায়, এই লেখায় যদি সেগুলো নিয়ে বলতে পারতাম।


Tuesday, November 13, 2012

Installing OpenCV with Python on mac osx

There are many ways to do it and I have tried most of them but got only troubles. Only one worked for me. Lo and behold, here it is

For the record, I have Mac OS X 10.7.4

The recipe.

  1. Install Xcode from apple app store then install command line tools from xcode preference
  2. Install macports from here http://www.macports.org/install.php
  3. Open terminal put the command: sudo port selfupdate
  4. Install python26 by: sudo port install python26
  5. then: sudo port install py26-numpy
  6. (probably you don't need this step but I am recording it just because I have done it) then: sudo port install python_select 
  7. then: sudo port -v install opencv +python26
  8. it will take several hours. and install opencv-2.4.3
  9. then: sudo port select python python26
  10. this will select the newly installed python as your default. Which is absolutely necessary
  11. note, that IDLE will not work at this point. But python + opencv will. 
  12. now: sudo port install py26-tkinter
  13. this will make idle work
  14. to check it, run python from terminal and put: import cv2
  15. this should work smoothly. 
  16. do it step by step in the order stated in this recipe. Otherwise there is a high chance of falling in trouble. 
  17. now do amazing projects :) 
I have failed trying to use opencv-2.4.3 with python27. It simply does not work. If you don't want to take extra pain do it with python26 as I did. But If you really want to figure out how to use python27 check this link http://opencv.willowgarage.com/wiki/Mac_OS_X_OpenCV_Port 
And please let me know how you made it work.