PDA

View Full Version : پردازش تصویر برای حل یک پازل تصویری



Mohsen82
چهارشنبه 21 فروردین 1392, 20:25 عصر
سلام و سال نو مبارک.
یه برنامه می خوام بنویسم که یک تصویر مثل این رو دریافت کنه

102615
و مشخص کنه که آیا راه حل داره یا خیر و اگر داره راه حل رو نمایش بده.
اگر یه سر نخ یا آدرس سایت یا فروم خارجی هم بدید ممنون می شم.

linux
چهارشنبه 21 فروردین 1392, 20:33 عصر
سلام و سال نو مبارک.
یه برنامه می خوام بنویسم که یک تصویر مثل این رو دریافت کنه

102615
و مشخص کنه که آیا راه خل داره یا خیر و اگر داره راه حل رو نمایش بده.
اگر یه سر نخ یا آدرس سایت یا فروم خارجی هم بدید ممنون می شم.
دنبال این مطالب باش
Image Processing
AI
کلاس سوال سختی هست.

C#‎_best_Programmer
چهارشنبه 21 فروردین 1392, 20:57 عصر
به هیج وجه سخت نیست با مختصات تصویر کار می کنی مشکی سیاه

Mohsen82
چهارشنبه 21 فروردین 1392, 22:34 عصر
ممنون.
می خوام تو فروم خارجی پست بگذلرم، کجا پست بگذارم.تو msdn نمی شه تصویر گذاشت باید
اکانت Verify باشه. تو codeproject اصلا تصویر نمی شه گذاشت.یه لینکی یه پی دی افی چیزی .

Mohsen82
پنج شنبه 22 فروردین 1392, 00:53 صبح
راهنمایی لطفا.

مصطفی ساتکی
جمعه 30 فروردین 1392, 19:05 عصر
Mohsen82@ عزیز خواهشاً سعی کنید سوال پردازش تصویر را در تالار مربوطه مطرح کنید که جواب بگیرید.
و اما جواب شما . در این تصویر یک نقطه ورودی و یک نقطه خروجی دارید برنامه را طوری بنویسید که کاربر بتونه این 2 نقطه را مشخص کنه.
سپس تصویر ورودی را آستانه گبری نماید .(به فرض تصویر Grayscale هستش اگر مقادیر پیکسل ها بزرگتر از 128 برابر 255 و در غیر اینصورت 0 را جایگزین کنید)
حالا تصویر باینری رو دارید در نقطه که کاربر مشخص کرده تابع floodfill(api) را استفاده کنید نقطه ورودی رو به عنوان مرکز و رنگ رو هم 128 بدید همسایگی رو هم 8 بدید.حالا نقطه پایانی را بررسی کنید از مقدارش 128 بود مسیر وجود داره در غیر اینصورت مسیری وجود نداره.
نکته : در ضمن تصویر ورودی را طوری برش بدید که حاشیه سفید نداشته باشه.
IplImage* img = cvLoadImage("c:\\test2.jpg",0);

cvThreshold(img,img,168,255,CV_THRESH_BINARY);
CvPoint startPnt = cvPoint(15,15);
CvPoint endPnt = cvPoint(225,186);
cvFloodFill(img,startPnt,cvScalarAll(128),cvScalar All(0),cvScalarAll(0),0,8);
if (CV_IMAGE_ELEM(img,byte,endPnt.y,endPnt.x) == 128)
cout << "OK" <<endl;
else cout << "no path" << endl;
cvShowImage("view",img);
cvWaitKey(0);
cvReleaseImage(&img);