PDA

View Full Version : درجه بندی تصویر از طریق جدا سازی پیکسل...



rayson
پنج شنبه 10 فروردین 1391, 22:12 عصر
سلام دوستان.
من میخوام در محیط UBUNTU با Code Blocks از طریق OpenCV یک عکس که گرفتم ( مثلا وب کم ) ، اون را خط کشی کند به صورت X,Y (طول و عرض ) به تعداد پیکسل ، تا پایین ترین حد خود عکس را تقسیم کند و نمایش دهد .
من تصویر گرفتم ولی نمیدانم با چه توابعی باید کار کنم که بتوانم عملیاتی که ذکر کزدم را روی ان اعمال کنم.
یک عکس گذاشتم شاید با عکس منظورم را بهتر بفهمید دوستان.
میخوام این خطها که گذاشتم در تصویر هم دیده بشود مثل عکسی که گذاشتم.
-من میخوام عکس از وب کم بگیرم.
ممنون.84886

rayson
جمعه 11 فروردین 1391, 13:52 عصر
سلام
از دوستان کسی نیست راهنمایی کنه

dousti_design
شنبه 12 فروردین 1391, 00:11 صبح
دوست عزیز شما در یک محیط خاصی اونم با یک کتابخانه خاصی میخاید یه کار خاصی انجام بدید! تازه کدش رو میخاید!
خب openCV داکیومنت کاملی داره میتونید مطالعش کنید.
فکر نکنم اینجا بتونید جواب بگیرید.
موفق باشید

rayson
شنبه 12 فروردین 1391, 17:08 عصر
سلام ، دوست عزیز من فقط میخوام بدونم که برای اینکه بتونم X , Y در بیارم در تصویر از چه تابعی استفاده کنم مناسب است.

rayson
شنبه 12 فروردین 1391, 19:03 عصر
دوستان با تابع CvCircle امکانش هست این عملی که من میخوام انجام بدم؟

مصطفی ساتکی
سه شنبه 15 فروردین 1391, 18:57 عصر
شما اگر با نصب OpenCV و استفاده اون در Codeblocks مشکلی ندارید به سادگی می تونید اینکار رو توسط cvline انجام دهید cvCircle جهت رسم دایره هستش .به راحتی خطوط افقی و عمودی با تناوب دلخواه رو رسم کنید.
در ضمن در OpenVB توابع با حروف کوچیک شروع میشن و struct های مربوطه به حروف بزرگ.
این هم کد مربوطه.

#include "cv.h"
#include "highgui.h"
int main( int argc, char** argv )
{
int cellWidth = 100;
int cellHeight = 100;
int colCount ;
int rowCount ;
CvScalar lineClr = CV_RGB(255,0,0);

CvCapture* capture = cvCaptureFromCAM(0);
if ( capture)
{
IplImage* queryImg = cvQueryFrame(capture);
if (queryImg)
{
colCount = queryImg->width / cellWidth;
rowCount = queryImg->height / cellHeight;

}
while (queryImg)
{
// draw horizentol
for (int i=1; i <= rowCount;i++)
{
cvLine(queryImg,cvPoint(0,i* cellHeight),cvPoint(queryImg->width,i*cellHeight),lineClr,1);
}
for (int j=1; j <= colCount;j++)
{
cvLine(queryImg,cvPoint(j* cellHeight,0),cvPoint(j*cellHeight,queryImg->height),lineClr,1);
}
cvShowImage("view",queryImg);
int ch = cvWaitKey(1);
if (ch == 27) break;
queryImg = cvQueryFrame(capture);
}
}
}