PDA

نسخه کامل مشاهده نسخه کامل : چه جوری میشه یک عکس رو به ماتریس در آورد



blackroos
15-05-2006, 11:07
سلام دوستان می خواستم بیبینم چه جوری میشه یک عکس رو به ماتریس در آورد یک ماتریس که مختصات و رنگ هر یک از پیکسل ها رو در خودش ذخیره می کنه اگه کمکم کنید خیلی ممنون می شم من تا سه شنبه بیشتر وقت ندارم فقط همین یک تیکه از برنامه مونده اگه میشه کمکم کنید
مخلصوتون Blackroos(رضا)

tomcat
15-05-2006, 15:33
شما بیا با استفاده از یک آرایه دو بعدی مختصات و رنگ و ذخیره کن .
روش کار اینه که اول مختصات که ازش رنگو میخونی با یه الگوریتم (هرچی دوست داری) به یک مختصات تبدیل کن مثلاٌ یه روش خیلی ساده X\Y و داخل یکی از خونه های آرایه تبدیل کن و بعد رنگ و داخل خونه بعدی بزار.
این روش چند تا مشکل داره . که اولاٌ خیلی بزرگ میشه . تعداد خونه های تکراری هم احتمال داره زیاد بشه .
شما بیا از یه الگوریتم دیگه استفاده کن . اونم اینه که یه خونه برای مختصات در نظر بگیر یه خونه برای رنگ و یه خونه برای تعداد تکرار رنگ ها . چون هر عکس از یکسری پیکسل کنار هم تشکیل میشه احتمال داره چند پیکس همرنگ کنار هم قرار بگیره که از این الگوریتم برای کم حجم کردن استفاده کنی بهتره .
البته الگوریتم برای اینکار زیاد هستن . من فعلاٌ این به ذهنم اومد .
*-----------------------------*
میرسیم سر دستور ها که باید استفاده کنی
شئ Picture یک دستور به نام Paint داره که میتونه رنگ نقطه مورد نظر رو برگردونه ....
خوب دیگه چیزی نمونده که نگفتم دیگه کد نویسش پا خودت .
رضا جان هرجا مشکل داشتی من در خدمت هستم ...........
موفق باشی

blackroos
17-05-2006, 20:01
اگه میشه یکمی بیشتر توضیح بده یا اگر ممکن هست یک نمونه کد برام بنویس البته بخبشید که این رو می گم ها چون من اصلا بلد نیستم تو ویژال با ماتریس ها کار کنم ممنون می شم اگر دیگر دوستان هم کمک کنند

tomcat
19-05-2006, 06:31
سلام آقا رضا.
اینم یه نمونه کد فقط برای آشنایی شما دیگه بهینه کردنش پای خودت .
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

mohseni12345
20-05-2006, 23:50
Edge Detection with Matrix Convolution - the Visual Basic Source Code
Requires Victor Image Processing Library for 32-bit Windows v 5 or higher.


' Function Declaration ...........................................
Declare Function matrixconvex Lib "VIC32.DLL" (ByVal ksize As Long, ByRef firstelement as byte, ByVal divsr As Long, srcimg As imgdes, resimg As imgdes) As Long

' The Function ..................................................
Public Function diagonaledge(ByRef myimage As imgdes) As Long
Dim rcode As Long
Dim kernel(0 To 8) As Byte ' 3 x 3 kernel
Dim kernelvalues As Variant
Dim j As Integer
Dim divisor As Long

divisor = 0

' Kernel values:
' -5 0 0
' 0 0 0
' 0 0 5

kernelvalues = Array(-5, 0, 0, 0, 0, 0, 0, 0, 5)
For j = 0 To 8
If (kernelvalues(j) >= 0) Then
kernel(j) = kernelvalues(j)
Else
kernel(j) = kernelvalues(j) + 256 ' Negative values have to be converted to corresponding positive values
' -1 becomes 255
End If ' -2 becomes 254, and so on

divisor = divisor + kernelvalues(j)
Next j

If (divisor = 0) Then divisor = 1 ' Make sure divisor is not zero
rcode = matrixconvex(3, kernel(0), divisor, myimage, myimage)

diagonaledge = rcode

End Function

blackroos
27-05-2006, 12:55
سلام بچه ممنونم از اینکه به فکر بودین ولی او فایلی که گذاشتین وجود نداره واین کدی هم که برام نوشتید اصلا عمل نممی کنه یعنی پیغام خطا میده که این api رو نمی شناسه

tomcat
27-05-2006, 15:26
دوباره آپلود میکنم . ولی نه الان فردا صبح

tomcat
28-05-2006, 06:00
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
به این آدرس مراجعه کن

blackroos
28-05-2006, 19:36
ببخشید ها ولی این با هم نمی یاد اگر ممکن هست به ایمیل بفرستید
blackroos2005@noavar.com

blackroos
28-05-2006, 19:36
ممنون از اینکه کمکم می کنید ولی این با هم نمی یاد اگر ممکن هست به ایمیل بفرستید
blackroos2005@noavar.com