ورود

View Full Version : مشکل با وبکم !!



killer-star
چهارشنبه 31 مرداد 1386, 15:31 عصر
سلام دوستان

من یک برنامه نوشتم که عکس رو از وبکم میگیره و به فاصله .5 ثانیه مقایسه میکنه اگه یکی نبودن یک آهنگ پخش میکنه !!!! اما دو تا مشکل دارم !!!!

3 تا تایمر تو برنامس که 70 -80 % سی پی یو رو اشغال میکنه !!! آیا این مشکل ساز نمیشه ؟؟
کامپیوتر نمیسوزه ؟؟؟؟

هر کاری که با کامپیوتر انجام بشه در زمانی که برنامه در حال اجرا هست !! آهنگ پخش میشه !!!
نمیدونم چرا واقعا عجیبه برام !!! مطمعن ام که تصویر وبکم تغییری نمیکنه !!! فقط یک پوشرو مینیمیز کنم آهنگ پخش میشه :عصبانی++:

حتی کامپیوتر رو گذاشته بودم و رفته بودم وقتی رفته بود رو ScreenSaver برنامه آهنگرو پخش کرد !!!!

مشکل چیه ؟؟؟

خواهشا هر نظری که دارید بگید !!!!

ممنون

killer-star
چهارشنبه 31 مرداد 1386, 16:40 عصر
فکر میکنم مشکل از دستور SendMessage باشه !!!
آیا راهی هست بشه درستش کرد ؟؟؟:افسرده::گریه:

مهیار کرمی
جمعه 02 شهریور 1386, 10:20 صبح
سلام دوست عزیز
1-برای CPU تو هیچ مشکلی پیش نمی آید ،من بدتر از اینها را امتحان کردم
2-اگر بر روی پیکسلهای گرفته شده از وب کم استفاده می کنی و روی آنها پردازش می کنی
امکان ندارد که دو تصویر یک شکل بدهد چون دقت وب کم آنقدر نمی باشد که به تو همان پیکسل های فریم قبلی را بدهد(حتی اگر سرعتت زیاد باشد).
تو باید یک فیلتر برای برنامه ات تعریف کنی، مثلا RGB یک پیکسل را بگیری بعد آر ، جی و بی را از هم جدا کنی و یک محدوده برای برای هر کدام قرار دهی،مثلا:
if 0>red>20 then red=20

killer-star
جمعه 02 شهریور 1386, 10:39 صبح
سلام دوست عزیز
1-برای CPU تو هیچ مشکلی پیش نمی آید ،من بدتر از اینها را امتحان کردم
2-اگر بر روی پیکسلهای گرفته شده از وب کم استفاده می کنی و روی آنها پردازش می کنی
امکان ندارد که دو تصویر یک شکل بدهد چون دقت وب کم آنقدر نمی باشد که به تو همان پیکسل های فریم قبلی را بدهد(حتی اگر سرعتت زیاد باشد).
تو باید یک فیلتر برای برنامه ات تعریف کنی، مثلا RGB یک پیکسل را بگیری بعد آر ، جی و بی را از هم جدا کنی و یک محدوده برای برای هر کدام قرار دهی،مثلا:
if 0>red>20 then red=20

سلام

آقا خیلی ممنون بخاطر جوابت

برای مقایسه پیکسل ها به برنامه میگم که اگر مقدارشون 6000000 هم فرق داشت هنوز یکسان بگیرتشون :گیج::لبخندساده:

که البته درست هم کار میکنه ولی مشکل اینجاست که اگر صفحه فعال اون برنامه نباشه برنامه درست کار نمیکنه چون فکر کنم تمام برنامه های ویندور از SendMessage استفاده میکنن و همونطور که میدونی برنامه هم برای گرفتن عکس از SendMessage استفاده میکنه !
بنابراین قاطی پاتی میشه !

مهیار کرمی
جمعه 02 شهریور 1386, 20:03 عصر
برای مقایسه پیکسل ها به برنامه میگم که اگر مقدارشون 6000000 هم فرق داشت هنوز یکسان بگیرتشون
سلام
این را در نظر بگیر که تغییر رنگ مثلا از قرمز کم رنگ به پر رنگ با یک حالت یکسان پیش نمی رود(مثلا به علاوه 2500 بشود.)
در واقع RGB یک مکعب می باشد.که از آن نظمی که تو فکر می کنی پیروی نمی کند.
http://barnamenevis.org/forum/C:\Documents and Settings\Mahyar\My Documents\My Pictures\RGB cube.bmp
باید آن کد را به red,green,blue تجزیه کنی آن وقت از آنها برای محدوده ات استفاده کنی.


Dim Re As Integer
Dim Ge As Integer
Dim Be As Integer
Dim RR As Double
Private Declare Function GetPixel Lib "gdi32.dll" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
Private Function Converting(Xw As Integer, Yw As Integer)
RR = GetPixel(Picture1.hdc, Xe, Ye)
Re = CStr(RR And &HFF&)
Ge = CStr((RR And &HFF00&) / 2 ^ 8)
Be = CStr((RR And &HFF0000) / 2 ^ 16)
If Re <= 255 And Re > 200 Then Re = 255
If Re <= 200 And Re > 150 Then Re = 200
If Re <= 150 And Re > 100 Then Re = 150
If Re <= 100 And Re > 50 Then Re = 100
If Re <= 50 Then Re = 50
If Ge <= 255 And Ge > 200 Then Ge = 255
If Ge <= 200 And Ge > 150 Then Ge = 200
If Ge <= 150 And Ge > 100 Then Ge = 150
If Ge <= 100 And Ge > 50 Then Ge = 100
If Ge <= 50 Then Ge = 50
If Be <= 255 And Be > 200 Then Be = 255
If Be <= 200 And Be > 150 Then Be = 200
If Be <= 150 And Be > 100 Then Be = 150
If Be <= 100 And Be > 50 Then Be = 100
If Be <= 50 Then Be = 50
Picture1.BackColor = RGB(Re, Ge, Be)
End Function

اگر برنامه ات هم برروی دسکتاپ نباشد(مثلا hide باشد) ،اطلاعاتی که از وب کم برایت می آید ، برروی picture box (که به وب کم وصل هست) برروی آن ظاهر نمی شود .(البته این را هم بدان که باید از دو تا picture box استفاده کنی؛یکی که به وب کم وصل می شود و دیگری که از picture box اول فریم می گیرد و بر روی آن پردازش می شود.)
به Sendmessage هم ربطی ندارد.

killer-star
جمعه 02 شهریور 1386, 21:32 عصر
سلام
این را در نظر بگیر که تغییر رنگ مثلا از قرمز کم رنگ به پر رنگ با یک حالت یکسان پیش نمی رود(مثلا به علاوه 2500 بشود.)
در واقع RGB یک مکعب می باشد.که از آن نظمی که تو فکر می کنی پیروی نمی کند.
http://barnamenevis.org/forum/C:%5CDocuments%20and%20Settings%5CMahyar%5CMy%20Do cuments%5CMy%20Pictures%5CRGB%20cube.bmp
باید آن کد را به red,green,blue تجزیه کنی آن وقت از آنها برای محدوده ات استفاده کنی.

اگر برنامه ات هم برروی دسکتاپ نباشد(مثلا hide باشد) ،اطلاعاتی که از وب کم برایت می آید ، برروی picture box (که به وب کم وصل هست) برروی آن ظاهر نمی شود .(البته این را هم بدان که باید از دو تا picture box استفاده کنی؛یکی که به وب کم وصل می شود و دیگری که از picture box اول فریم می گیرد و بر روی آن پردازش می شود.)
به Sendmessage هم ربطی ندارد.

سلام
خیلی ممنون
آهان فهمیدم چجوریه !!
اما یک چیزی آیا نمیشه کاری کرد که وقتی hide هست باز هم کار کنه ؟؟؟
ممنون

مهیار کرمی
جمعه 02 شهریور 1386, 21:39 عصر
من خودم رو این زیاد کار کردم ولی ظاهرا که نمی شه.(مگر اینکه از تابع API استفاده نکنی.)
حد اقل من نمی دانم.