View Full Version : برنامه برای تابلو روان(تبدیل عکس به پیکسل)
alirezalahij
دوشنبه 22 مهر 1387, 14:26 عصر
http://barnamenevis.org/forum/attachment.php?attachmentid=20512&d=1216209512
سلام
من به یه برنامه احتیاج دارم که عکس سیاه و سفید( به اندازه 32*64) رو به پیکسل تبدیل کنه تا بتونم بفهمم کدوم نقاط روشن و خاموش هستن
چه طور می شه یه متن گرفته شده رو یه این عکس تبدیل کرد.
http://i33.tinypic.com/2s6rqja.gif
ممنون
vahid_d_0101
دوشنبه 22 مهر 1387, 14:47 عصر
این برنامه را من خودم تو این سایت گذاشتم این برنامه ربطی به کار شما نداره اگر میخواستید نوشته را تبدیل کنید با این میشد ولی الان عکس هست که اگر دقت کنید این برنامه فقط text را تبدیل میکنه باید بچه ها کمک کنن این برنامه را بنویسن
alirezalahij
دوشنبه 22 مهر 1387, 14:55 عصر
سلام
واقعا برنامه عالیی لود ممنون
من میخوام قسمت تبدیل متن به تابلو رو از این برنامه بردارم
و باقی احتیاج به کمک دارم.
r0ot$harp
دوشنبه 22 مهر 1387, 16:48 عصر
سلام
واقعا برنامه عالیی لود ممنون
من میخوام قسمت تبدیل متن به تابلو رو از این برنامه بردارم
و باقی احتیاج به کمک دارم.
دوست عزیز این کار را با توابع مختلفی می شه انجام داد . ولی بهترین اونا GetPixell و Point هست .
بهترین کار اینه که یه خورده VB خود را قوی کنید . چون در اصل شما الان درخواست پروژه کرده اید نه یادگیری . پس بهتره VB یاد بگیرید .
باتشکر احسان
alirezalahij
دوشنبه 22 مهر 1387, 19:11 عصر
سلام
من یاد گیری vb رو شروع کردم
فقط سر نخ می خواستم که آقا احسان دادن
get pixel می شه کمی توضیح بدین
r0ot$harp
دوشنبه 22 مهر 1387, 22:53 عصر
سلام
من یاد گیری vb رو شروع کردم
فقط سر نخ می خواستم که آقا احسان دادن
get pixel می شه کمی توضیح بدین
دوست عزیز در مورد Getpixel در سایت نمونه وجود دارد اگر پیدا نکردی Search Google .
ولی کار اصلیش اینه که میاد از طریق X, Y شروع به خوندن Pixel ها می کند و رنگ Pixel ها را بر میگرداند .
بازهم من زیاد با این کار نکردم در این مورد دوست عزیزم محسن (MBT) بهتر می تونه کمک کنه .
باتشکر احسان
hamed aj
سه شنبه 23 مهر 1387, 01:16 صبح
با سلام
دوست عزیز؛
زمانی که روی پروژه ی Image Processing برای درس شبکه های عصبی کار می کردم، مجبور شدم چند تا تکیه برنامه برای کارم بنویسم. (هر چند نهایتاً از vb ناامید شدم و مجبور به استفاده از matlab شدم)
برنامه زیر یک عکس RGB رو دریافت و تبدیل به یک عکس Binary می کند. البته شما می تونید بجای قسمت تبدیل به عکس Binary ، حاصل رو که یک ماتریس دو بعدی هست در یک آرایه دو بعدی ذخیره کنید.
24388
موفق باشید
alirezalahij
سه شنبه 23 مهر 1387, 14:22 عصر
سلام
چه جوری می شه یه متن و به عکس و عکس از یه گوشه شروع کرد و تو یه آرایه دو بعدی ذخیره کرد؟
hamed aj
سه شنبه 23 مهر 1387, 18:19 عصر
با سلام
برنامه تبدیل متن به عکس فوق العاده زیاد هست. یه سرچ کن خیلی پیدا میکنی (مخصوصاً برای VB)
اما برای انتقال عکس به آرایه دو بعدی یا به عبارتی ذخیره عکس در آرایه به روش زیر عمل کن :
1 - ابتدا با برنامه ای که در ضمیمه پست بالا قرار دادم ، عکس رو به یک عکس باینری تبدیل کن
2 - از گوشه بالا سمت چپ ، باید پیکسل به پیکسل مقدار رنگ پیکسل رو بخونی ( مقادیری که میخونی یا 0 هست یا 255 ) و به گوشه پایین سمت چپ حرکت کنی ( یا اصطلاحاً جاروب کنی ) و مقدار هر پیکسل رو در یک آرایه دو بعدی ذخیره کن (عناصر این آرایه از نوع boolean هستند)
این کار رو با استفاده از دو حلقه for تودرتو انجام بده
موفق باشید
alirezalahij
سه شنبه 23 مهر 1387, 21:24 عصر
http://i33.tinypic.com/2s6rqja.gif
متن و جه جوری می تونم مثل شکل بالا کنم
یعنی متنو بگیرم بعد نقطه نقطه ش کنم
hamed aj
چهارشنبه 24 مهر 1387, 14:48 عصر
با سلام
دوست عزیز؛
برنامه زیر متن نوشته شده را به یک عکس با فرمت BMP تبدیل میکنه. تبدیل این عکس به یک آرایه دوبعدی هم کار چندان دشواری نیست. اگر به مشکل خوردین بگید کد اون رو هم براتون می نویسم.
24467
موفق باشید
HjSoft
چهارشنبه 24 مهر 1387, 16:49 عصر
آیا برنامه را می خواهید به تابلو روان واقعی متصل کنید ؟ اگر نه من یک OCX دارم که نوشته های ورودی رو درون خودش به صورت پیکسل نمایش می ده
r0ot$harp
چهارشنبه 24 مهر 1387, 16:59 عصر
آیا برنامه را می خواهید به تابلو روان واقعی متصل کنید ؟ اگر نه من یک OCX دارم که نوشته های ورودی رو درون خودش به صورت پیکسل نمایش می ده
دوست عزیز به نظر من می خوان به تابلو وصل کنند . دوست من مدیر انجمن سایت IranLed هست و کارش تابلو سازی هست و به طور حرفه ای این کار رو دنبال می کنه . اون دقیقا همین برنامه رو با Delphi نوشته که قابلیت انتخاب فونت هم داره همین طور انتخاب افکت و یکی دو روزه برنامش و نوشت . به خدا پیداش نکردم وگرنه ازش کمک می گرفتم .
باتشکر احسان
alirezalahij
چهارشنبه 24 مهر 1387, 20:55 عصر
سلام
واقعا ممنون
من هر چی دنبال یه آموزش برای این getpixel گشتم پیدا نکردم:چشمک:
اگه کمکم کنید خیلی ممنون می شم:قلب:
تا حالا می تونم عکس و باینری کنم و متن و به عکس تبدبل کنم
فقط چه جوری می تونم عکس و با getpixel به یه آرایه دوبعدی تبدیل کنم
ممنون
r0ot$harp
چهارشنبه 24 مهر 1387, 22:02 عصر
سلام
واقعا ممنون
من هر چی دنبال یه آموزش برای این getpixel گشتم پیدا نکردم:چشمک:
اگه کمکم کنید خیلی ممنون می شم:قلب:
تا حالا می تونم عکس و باینری کنم و متن و به عکس تبدبل کنم
فقط چه جوری می تونم عکس و با getpixel به یه آرایه دوبعدی تبدیل کنم
ممنون
دوست عزیز این یه نمونه کد هست که وقتی رو عکس حرکت می کنید و کرسر موس روی نقاط سایه بره عدد 0 بر می گردونه و دیگر رنگ های متفاوت .
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Me.Caption = GetPixel(Picture1.hdc, X, Y)
End Sub
قبل از کار حتما ScaleMode=3 را برای PictureBox تنظی کنید .
اینم نمونه عکس واسه کار .
http://i37.tinypic.com/2hyyy5z.jpg
باتشکر احسان
hamed aj
پنج شنبه 25 مهر 1387, 00:26 صبح
با سلام
دوست عزیز؛
اینم تبدیل عکس به آرایه دو بعدی (عجله ای نوشتم، خیلی امتحانش نکردم اگه مشکل داره بگو!!!)
24492
موفق باشید
alirezalahij
پنج شنبه 25 مهر 1387, 17:09 عصر
سلام
آقاحامد خیلی ممنونم
برنامه عالی هستش و بدجوری به دردم می خوره
فقط یه مشکلی هست
من این برنامه رو نمی فهمم (vb زیاد کارنکردم)
اگه یه لطفی کنید الگوریتم توضیح بدی خیلی لطف کردید
آخه هیچ جای برنامه getpixel نبود
r0ot$harp
پنج شنبه 25 مهر 1387, 23:11 عصر
سلام
آقاحامد خیلی ممنونم
برنامه عالی هستش و بدجوری به دردم می خوره
فقط یه مشکلی هست
من این برنامه رو نمی فهمم (vb زیاد کارنکردم)
اگه یه لطفی کنید الگوریتم توضیح بدی خیلی لطف کردید
آخه هیچ جای برنامه getpixel نبود
دوست عزیز اگر به پست اول من توجه کنید گفتم با Point و Getpixel و ... می شه این کار رو انجام داد .
این دوستمون با Point این کار رو انجام داده اند .
طبق این دستور :
color = Form1.Picture1.Point(i, j)
طبق دستور بالا میان و از طریق جاروب به صورت X , Y و پیدا کردن نقاط آنهای رو مقایسه و از آنهای یه آرایه ی دو بعدی می سازن . دوست عزیز برنامه ای که من دیدم دوستم نوشته بود با سرعت بسیار بالا این کار رو می کرد . پیداش کردم مطمئن باش Sample ازش می گیرم ولی Delphi هست . بازهم هر کدم از دستور ها رو نفهمیدی بگو بهت توضیح بدم .
باتشکر احسان
hamed aj
جمعه 26 مهر 1387, 00:28 صبح
با سلام
خواهش می کنم، من کمک کردن به دوستان رو وظيفه خودم می دونم (همونطور که ممکنه یه روز اونا به کمک من بیان)
اما توضیحات کدی که نوشتم :
Dim TowDArray() As Boolean
در اینجا یک آرایه از نوع boolean تعریف کردم اما تعداد اعضا رو مشخص نکردم تا بعداً بتونم متناسب با طول و عرض عکس، اینکار رو انجام بدم
کد مربوط به دکمه load picture کاملاً واضح هست (برای load عکس)
اما قسمت اصلی :
ReDim TowDArray(Form1.Picture1.ScaleHeight, Form1.Picture1.ScaleWidth) As Boolean
این خط آرایه ای رو که تعریف کرده بودیم به صورت Dynamic مجدداً تعریف می کنه و متناسب با طول و عرض عکس تعداد اعضای اون مشخص می شوند
در ادامه با دو حلقه ی تو در تو i و j تک تک پیکسل های عکس اسکن می شوند و مقدار رنگ هر پیکسل در متغیر color ریخته می شود، همونطور که می دونید در تصاویر RGB معمولی مقدار رنگ هر پیکسل بین 0 تا 16 میلیون هست.
حال با فرمول زیر مقدار Gray Scale (خاکستری گون) این پیکسل که یک عدد بین 0 تا 255 هست محاسبه می شود (0 معادل سیاه مطلق و 255 معادل سفید مطلق هست)(این فرمول طلایی در پردازش تصاویر فوق العاده اهمیت دارد)
GrayScale = ((color And 255) And 255) * 0.3 + (Int(color / 256) _
And 255) * 0.59 + (Int(color / 65536) And 255) * 0.11
در ادامه با یک شرط ، پیکسل هایی رو که مقدار GrayScale آنها کمتر از 127 می باشد را 0 و بیشتر از آن را 1 فرض کردیم تا آرایه ی باینری حاصل از عکس بدست آید
موفق باشید
r0ot$harp
جمعه 26 مهر 1387, 16:27 عصر
دوست عزیز کلی گشتم تا عکس برنامه رو برات پیدا کردم .
http://i35.tinypic.com/2dc68o3.gif
باتشکر احسان
alirezalahij
سه شنبه 30 مهر 1387, 02:36 صبح
سلام
خیلی ممنونم آقا حامد
نکات زبادی رو از برنامه یاد گرفتم واقعا ممنون
فقط اگه لطف کنید در مورد فرمول یه کم توضیح بدین(واقعا جالبه)
این فرمول طلایی در پردازش تصاویر فوق العاده اهمیت دارد)
کد:
GrayScale = ((color And 255) And 255) * 0.3 + (Int(color / 256) _ And 255) * 0.59 + (Int(color / 65536) And 255) * 0.11
اینم خیلی تابلو
اما نفهمیدم
اگه توضیح یدیدvbtabچیه و string 40 برای چیه؟
Form1.List1.AddItem ("Row" & vbTab & "Col" & vbTab & "Value")
Form1.List1.AddItem (String$(40, "-"))
بازم ممنونم
alirezalahij
سه شنبه 30 مهر 1387, 14:42 عصر
سلام
کسی می تونه
این فرمول طلایی در پردازش تصاویر برام توضیح بده
ممنون
hosseinzpp
پنج شنبه 17 اردیبهشت 1388, 19:56 عصر
سلام
جناب علی رضا لاهیجی اگه براتون مقدور است سورس کد وی بی برنامه بالاneonmaker را برام ارسال کن
ممنونت میشم
جاویدیان
hosseinjavidian@gmail.com
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.