PDA

View Full Version : طریقه علامت گذاری رنگ های خاص تصویر توسط پردازش تصویر (c++ , OpenCV )



rayson
شنبه 31 فروردین 1392, 19:00 عصر
سلام خدمت دوستان عزیز .
من از وب کم تصویر میگیرم ، من میخواستم رنگ را شناسایی کنم و آن را علامت گذاری کنم ( دور آن خط بکشم ) ، من در این برنامه دچار مشکل شدم .
دوستان اگر امکانش هست من را کمک کنید.
با تشکر.

مصطفی ساتکی
یک شنبه 01 اردیبهشت 1392, 08:06 صبح
با تعریف اشاره گری از نوع CvCapture و ایجاد یک capture برای دوربین با تابع cvCreateCameraCapture و سپس تو یک حلقه با cvQueryFrame فریم هاتونو دریافت کنید.
حالا هر فریم رو توی فضای رنگی hsi فیلتر کنید در نهایت یم سری blob دارید با تابع cvFindConture کلیه کانتور ها را پیدا کرده یا با cvFloodFill و سپس با تابع cvMinAreaRect2 ابعاد هر یک از کانتور ها بدست میاد که با تابع cvRectangle می تونید یک کادر دورش رسم کنید.
برای اطلاعات بیشتر به این پست (http://www.7khatcode.com/217/%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA-%D9%81%D8%B1%DB%8C%D9%85-%D8%A7%D8%B2-%D8%AF%D9%88%D8%B1%D8%A8%DB%8C%D9%86-%D8%AA%D9%88%D8%B3%D8%B7-opencv?show=217#q217)مراجعه کنید.

موفق باشید.

rayson
یک شنبه 01 اردیبهشت 1392, 11:49 صبح
با سلام .
من کد گرفتن تصویر از وبکم مینویسم وقتی اجرا میشه وبکم روشن میشود اما تصویر درون کادر به نمایش در نمی آید.لطفا راهنمایی کنید.
مرسی.
103135

rayson
یک شنبه 01 اردیبهشت 1392, 15:02 عصر
کسی نمیتونه ت و این زمینه به من کمک کنه ؟

rayson
یک شنبه 01 اردیبهشت 1392, 22:58 عصر
لطفا در این مورد به من کمک کنید ، من شماره گرفتن دوربین هم تغییر دادم اما باز درست نشد.

مصطفی ساتکی
دوشنبه 02 اردیبهشت 1392, 07:50 صبح
1- شما پست گذاشتید دیگران در اولین فرصت جواب میدن دلیلی نداره تو چند تا پست دیگه خواهش کنید که به شما جواب داده بشه چون قرار بر این هستش که دیگران در آینده هم از این پست استفاده کنند.
2- سعی کنید کد مربوطه را قرار بدید نه تصویر .در مواردی تصویر قرار بدید که ضروری هستش.

شما تو کد (cvWaitKey(0 استفاده کردید در این حالت اگر کلیدی را فشار دهید تصویر به شما نشان داده میشه.
در ضمن در کد سعی کنید زمانیکه حافظه ای گرفته میشه اشاره گر خروجی را بررسی کنید که NULL نباشه و در پایان حافظه مربوطه را آزاد کنید.

کد نمونه براین کار براتون در زیر قرار دادم.

void displayCameraView()
{
CvCapture* cap = cvCreateCameraCapture(0);
if (cap)
{
IplImage* frame = cvQueryFrame(cap);
while(frame)
{
cvShowImage("view",frame);
int ch = cvWaitKey(1);
if (ch == 27)
break;
frame = cvQueryFrame(cap);

}
cvDestroyWindow("view");
cvReleaseImage(&frame);
}
cvReleaseCapture(&cap);
}


موفق باشید

rayson
دوشنبه 02 اردیبهشت 1392, 12:47 عصر
سلام.
بابت spam ببخشید لطفا پست های spam را حذف کنید.
زمانی که برنامه را اجرا میکنم یک صفحه باز شده که بالای آن زده Video Source و در یک کادری از من میخواد Select a video device کادر که باز میکنم فقط یک نام usb 2.0 camera دیده میشود .
زمانی که روی ok کلیک میکنم برنامه بسته میشود روی دکمه cancel هم به همین ترتیب هست.(ترسیدم عکس بزارم توضیح دادم )
با تشکر .


ویرایش : با یک لپ تاپ دیگر چک کردم از کد خطا مگیرد از تابع displayCameraView خطای Local Function Definitions are illegal و خطای
error expected a ;
برنامه را چند بار تریس کردم اما درون ان مشکلی ندیدم. لطفا چک کنید .
مرسی.

مصطفی ساتکی
دوشنبه 02 اردیبهشت 1392, 13:26 عصر
این کد چیز پیچیده ای نداره و در ضمن تست هم شده . شما بایستی تنظیمات OpenCV تو پروژتون رو چک کنید تا ایردای در تنظیمات پروژه وجود نداشته باشه.

rayson
دوشنبه 02 اردیبهشت 1392, 15:41 عصر
سلام ، برای تابع displayCameraView باید Header خاصی تعریف بشه ؟
من از :

#stdafx.h
#highgui.h
#cv.h
#cxcore.h
استفاده کردم.
من از openCV 2.2 استفاده میکنم ،
من همه چیز چک کردم مشکل برطرف شده ولی باز هم تصویر ندارم از یک وبکم خارجی هم استفاده کردم باز هم جوابگو نبود.

مصطفی ساتکی
سه شنبه 03 اردیبهشت 1392, 07:39 صبح
مسیر include مربوط به OpenCV و مسیر Lib و لیست lib ها در 2 نسخه release و debug را چک کنید.
#include <cv.h>
#include <highgui.h>

rayson
سه شنبه 03 اردیبهشت 1392, 16:52 عصر
سلام.
من به برنامه مسیر زیر دادم:
C:\OpenCV2.2\include\opencv
C:\OpenCV2.2\include

درون debug
C:\OpenCV2.2\lib

درون release
C:\OpenCV2.2\lib

درون input
opencv_calib3d220d.lib
opencv_contrib220d.lib
opencv_core220d.lib
opencv_features2d220d.lib
opencv_ffmpeg220d.lib
opencv_flann220d.lib
opencv_gpu220d.lib
opencv_highgui220d.lib
opencv_objdetect220d.lib
opencv_video220d.lib
opencv_ml220d.lib
opencv_legacy220d.lib
opencv_imgproc220d.lib
و همچنین محتویات فولدر Bin در OpenCV2.2 را درون فولدر Debug پروژه کپی کردم.
ولی متاسفانه هنوز هم تابع DisplayCameraView را برنامه نمیخواند .
دوست من چیز دیگری هم به نظر شما هست که من انجام ندادم ؟ لطفا راهنمایی کنید .
ضمیمه :یکی از دوستان که درون ubuntu با این کتابخانه کار میکند گفت بعضی از کدها از زبان C است و به همین دلیل امکان دارد در C++ که کار میکنید جواب ندهد.
باتشکر.