دسترسی به عناصر قسمتی از تصویر - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

دسترسی به عناصر قسمتی از تصویر

0 امتیاز

سلام

IplImage* edge = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1);

cvCanny(imged,edge,10,150);

for(int i=edge->roi->yOffset;i<edge->roi->yOffset+edge->roi->height;i++){
                        for(int j=edge->roi->xOffset;j<edge->roi->xOffset+edge->roi->width;j++){
                            cur=CV_IMAGE_ELEM(edge,bool,i,j);
                            if(cur!=nei){
                                chg++;
                                nei=cur;
                            }
                        }
                    }

این کد تغییرات (لبه های عمودی)در مستطیل رو میشماره ؟؟؟

اگه نه درستش رو بگین

متشکرم

سوال شده اسفند 2, 1392  بوسیله ی sinaprog (امتیاز 12)   2 3
ویرایش شده اسفند 2, 1392 بوسیله ی BlueBlade

1 پاسخ

+1 امتیاز
 
بهترین پاسخ
اولاً اینکه دیگه کد ansi c ننویسید الان چند سالیه که منسوخ شده ثانیا استفاده از ماکروی CV_IMAGE_ELEM بهینه نیست.
کد اصلاح شده شما به صورت C++ :

	Mat img = imread("d:/1.png",0);
	Mat edge;
	cv::Rect r(0,0,img.cols,img.rows);
	Canny(img(r),edge,10,150);
	
	for (size_t i=0; i < edge.rows;i++){
		uchar *row = edge.ptr<uchar>(i);
		int change_count =0;
		uchar cur_value = row[0];
		for (size_t j=1; j < edge.cols;j++)
			if (row[j] != cur_value){
				cur_value = row[j];
				change_count++;
			}
			cout << change_count/2  << endl;
	}

 

 

پاسخ داده شده اسفند 2, 1392 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
ویرایش شده اسفند 3, 1392 بوسیله ی مصطفی ساتکی
...