PDA

View Full Version : هیستوگرام فیلم



zhashemi
یک شنبه 29 مرداد 1391, 14:34 عصر
سلام
من میخوام فیلمی رو به کامپیوترمنتقل کنم وهیستوگرامشو بگیرم ولی نمیدونم چطوری؟
کدی که برای انتقال فیلم دارم اینه:


#include "cv.h"
#include "highgui.h"
int main(int argc, char* argv[])
{
CvCapture* capture = cvCreateCameraCapture(0);
int fps=(int)cvGetCaptureProperty(capture,CV_CAP_PROP_ FPS);

IplImage *frame;
cvNamedWindow("video");
cvNamedWindow("window");
while(1)
{
frame=cvQueryFrame(capture);
cvShowImage("window",frame);
cvWaitKey(fps);
if(!frame)break;
}
return 0;
}


دوستان خواهشا کمک کنید خیلی ضروریه!
ممنون

zhashemi
جمعه 03 شهریور 1391, 18:29 عصر
یعنی کسی نمیدونست!!!!!!!!
دوستان کدش رو پیداکردم خواستید پیام بذارید

مصطفی ساتکی
شنبه 04 شهریور 1391, 20:00 عصر
سلام
من مسافرت بودم اولی از تصویر هیستوگرام میگیره و دومی هیستوگرام رو نمایش میده
//returns one dimensioanl histogram from gray scale image
void bhGet1DHistogram(CvArr* srcArr ,CvHistogram** hist, int size, IplImage* mask)
{
IplImage* srcImg,stub;
srcImg = cvGetImage(srcArr,&stub);

int sizes[] = {size};
float ranges1[] = {0,size};
float* ranges[] = {ranges1};
*hist = cvCreateHist(1,sizes,CV_HIST_ARRAY,ranges,1);
if (mask != 0)
cvCalcHist(&srcImg,*hist,0,mask);
else cvCalcHist(&srcImg,*hist,0);


}

// display one dimensional histogram
void bhShow1DHistogram( CvHistogram* hist,IplImage** histImage,int height)
{
*histImage = cvCreateImage(cvSize(hist->mat.dim[0].size,height),8,1);
cvZero(*histImage);
float min_value, max_value;
cvGetMinMaxHistValue(hist,&min_value,&max_value);
float* pHist = hist->mat.data.fl;
for (int j=0; j < hist->mat.dim[0].size; j++)
{
int value = pHist[j] / max_value * height;
cvLine(*histImage,cvPoint(j,height),cvPoint(j,heig ht- value),cvScalarAll(255)) ;
}

}



موفق باشید

zhashemi
سه شنبه 28 شهریور 1391, 18:20 عصر
سلام
من مسافرت بودم اولی از تصویر هیستوگرام میگیره و دومی هیستوگرام رو نمایش میده
//returns one dimensioanl histogram from gray scale image
void bhGet1DHistogram(CvArr* srcArr ,CvHistogram** hist, int size, IplImage* mask)
{
IplImage* srcImg,stub;
srcImg = cvGetImage(srcArr,&stub);

int sizes[] = {size};
float ranges1[] = {0,size};
float* ranges[] = {ranges1};
*hist = cvCreateHist(1,sizes,CV_HIST_ARRAY,ranges,1);
if (mask != 0)
cvCalcHist(&srcImg,*hist,0,mask);
else cvCalcHist(&srcImg,*hist,0);


}

// display one dimensional histogram
void bhShow1DHistogram( CvHistogram* hist,IplImage** histImage,int height)
{
*histImage = cvCreateImage(cvSize(hist->mat.dim[0].size,height),8,1);
cvZero(*histImage);
float min_value, max_value;
cvGetMinMaxHistValue(hist,&min_value,&max_value);
float* pHist = hist->mat.data.fl;
for (int j=0; j < hist->mat.dim[0].size; j++)
{
int value = pHist[j] / max_value * height;
cvLine(*histImage,cvPoint(j,height),cvPoint(j,heig ht- value),cvScalarAll(255)) ;
}

}



موفق باشید

مرسی!
یه مشکلی هست! هیستوگرام هر فریم با فریم بعدی چندان تفاوت ندار ه ومن میخوام این تفاوت رو زیاد کنم اما چه بلایی سر فریم هام بیارم که این طوربشه؟؟؟

مصطفی ساتکی
سه شنبه 28 شهریور 1391, 20:41 عصر
می تونید یه step قرار بدید و بجای اینکه فریم های متوالی را پردازش کنید به اندازه step به فریم های بعدی بروید به این ترتیب اختلاف هم بیشتر میشه

zhashemi
چهارشنبه 29 شهریور 1391, 08:20 صبح
می تونید یه step قرار بدید و بجای اینکه فریم های متوالی را پردازش کنید به اندازه step به فریم های بعدی بروید به این ترتیب اختلاف هم بیشتر میشه


راستی نمیتونم چنین کاری بکنم! میخوام وقتی شی وارد محیط شد شناساییش کنم! برای این کار باید مشخصات اون شی رو طوری تغییربدم که هیستوگرام درموقع ورود اون شی تفاوت زیادی رو نشون بده! ولی چطوری؟ اگرstep بذارم از بعضی هیستوگرام ها صرف نظرمیکنه!

مصطفی ساتکی
چهارشنبه 29 شهریور 1391, 11:41 صبح
اولاً بایستی ببینیم اون object که میخاید رد گیرش کنید ابعادش چقدره؟ آیا می تونه تقاوتی روی histogram داشته باشه یا نه.
اگر object شما از نظر Hue تو محدوده بقیه تصویر باشه هیستوگرام کمکی بهتون نمی کنه بایستی از Object مورد نظر feature استخراج کنید و سپس در هر فریم feature بدست آورده و feature های Object مورد نظر را داخلش جستجو کنید

موفق باشید

zhashemi
پنج شنبه 30 شهریور 1391, 08:53 صبح
اولاً بایستی ببینیم اون object که میخاید رد گیرش کنید ابعادش چقدره؟ آیا می تونه تقاوتی روی histogram داشته باشه یا نه.
اگر object شما از نظر Hue تو محدوده بقیه تصویر باشه هیستوگرام کمکی بهتون نمی کنه بایستی از Object مورد نظر feature استخراج کنید و سپس در هر فریم feature بدست آورده و feature های Object مورد نظر را داخلش جستجو کنید

موفق باشید

ممنون از راهنماییتون!
ولی من بیشتربه کمکتون نیازدارم! اگر کدم رو بذارم میتونید راهنماییم کنید؟