PDA

View Full Version : خوندن پیکسل به پیکسل تصویر



sina_saravi1
یک شنبه 03 مرداد 1389, 18:20 عصر
سلام

من یه عکسی تو پیکچر باکس دارم و میخوام اون عکس رو پیکسل به پیکسل بخونمش و اگه رنگش مخالف رنگ مورد نظر من بود روش یه عملیاتی انجام بدم

من یه روش بود که از تابع GetPixel استفاده میکرد و خروجیش رنگ پیکسل مورد نظر بود ولی درست کار نمیکرد
باید برای فهمیدن موضوع بالا از چه شرطی استفاده کنم ؟

m_azari16
یک شنبه 03 مرداد 1389, 21:19 عصر
سلام دوست عزیز
نمی دونم مشکلتون با getpixel چیه
ولی اگه نمی تونید مقدار رنگ خوانده شده رو تشخیص بدید می تونید که از مثال زیر استفاده کنید


color=bitmap.getpixel(x,y)
r=color.r
g=color.g
b=color.b

که b,g,r باید long باشه
البته خواندن مقدار دقیق رنگ اشتباه ایجاد می کنه چون اگه شما بخواین مثلا رنگ سبز ر و تشخیص بدید با یه کم روشن و تیره شدن رنگ سبز مشکل ایجاد میشه برای همین می تونید از دستور زیر استفاده کنید(البته اگه با سیستم رنگی hsb آشنا باشید

h=color.h
البته اگه خطای تابع رو دقیق بگی شاید بهتر بشه کمک کرد

sina_saravi1
سه شنبه 05 مرداد 1389, 15:30 عصر
من خودم این تصویر رو ایجاد کردم
یعنی یه متن رو تصویر چاپ کردم و میخوام پیکسل هاشو بخونم
اگه پیکسل خونده شده رنگی به غیر از رنگ بک کالر (Backcolor) تصویر رو داشت بهم پیغام بده

همش همین

m_azari16
سه شنبه 05 مرداد 1389, 17:10 عصر
سلام
تو پست اول گفتی getpixel درست کار نمی کنه .میتونی بگی مشکل کار کجاست کجا اشتباه می کنه. فکر نکنم که getpixel رنگ پیکسل رو اشتباه بده.

Alghoochi
سه شنبه 05 مرداد 1389, 22:41 عصر
Getpixel مقدار دقیق رنگ پیکسل رو بر می گردونه. مثلا (255,255,0) رنگ زرده و (254,254,0) هم زرده. ولی چشم ما این تفاوت خیلی جزیی رو حس نمی کنه.
از روشی که m_azari16 گفتن استفاده کن شاید نتیجه داد.

m_azari16
چهارشنبه 06 مرداد 1389, 01:25 صبح
البته getpixel مقدار rgb رو بر نمی گردونه بلکه مقدار از نوع color بر می گردونه
چون شما خودت خط رو می کشی پس رنگ خط رو هم می دونی و هم رنگ پس زمینه رو پس مقدار برگش داده شده مقدار دقیقی هست که خود شما در نظر دارید و این گونه خطاها فقط در مورد تصاویر و عکس ها اتفاق می افته چون ما رنگ دقیق هر قسمت رو نداریم ولی اینجا مقدار دقیق رو داریم.
ببین برنامه زیر وقتی به اولین پیکسل که رنگش با رنگ پس زمینه تفاوت داره برسه پیغام میده

Dim color As Color
Dim backcolor As Color
backcolor = Drawing.Color.Black 'در این قسمت رنگ پس زمینه رو مشخص می کنید
Dim x As Integer
Dim y As Integer
For x = 0 To 200
For y = 0 To 200
color = bitmap.GetPixel(x, y)
If not color = backcolor Then
MsgBox("")
End If
Next
Next

sina_saravi1
جمعه 08 مرداد 1389, 02:08 صبح
بازم جواب نداد

ممنون میشم شما یه نمونه برام بزارید

Alghoochi
جمعه 08 مرداد 1389, 02:59 صبح
عزیز بهتر نیست یه نمونه از عکسی که می خوای پردازش کنی رو اینجا قرار بدی تا ببینیم ایراد از کجاست؟

sina_saravi1
جمعه 08 مرداد 1389, 23:42 عصر
یه عکس ساده که روش نوشته شده "برنامه نویس"

Alghoochi
شنبه 09 مرداد 1389, 13:22 عصر
می خوای فقط متن برنامه نویس رو از روی عکس برداری؟

sina_saravi1
شنبه 09 مرداد 1389, 22:24 عصر
میخوام متن برنامه نویس رو پیکسل به پیکسل بخونم