我有一個代碼段從OpenCV的示例方法的轉換如下:C至DELPHI的OpenCV的示例代碼
CvScalar sum_line_pixels(IplImage* image, CvPoint pt1, CvPoint pt2)
{
CvLineIterator iterator;
int blue_sum = 0, green_sum = 0, red_sum = 0;
int count = cvInitLineIterator(image, pt1, pt2, &iterator, 8, 0);
for(int i = 0; i < count; i++){
blue_sum += iterator.ptr[0];
green_sum += iterator.ptr[1];
red_sum += iterator.ptr[2];
CV_NEXT_LINE_POINT(iterator);
/* print the pixel coordinates: demonstrates how to calculate the
coordinates */
{
int offset, x, y;
/* assume that ROI is not set, otherwise need to take it
into account. */
offset = iterator.ptr - (uchar*)(image->imageData);
y = offset/image->widthStep;
x = (offset - y*image->widthStep)/(3*sizeof(uchar)
/* size of pixel */);
printf("(%d,%d)\n", x, y);
}
}
return cvScalar(blue_sum, green_sum, red_sum);
}
我被困就行:
offset = iterator.ptr - (uchar*)(image->imageData);
迭代器的結構是:
PCvLineIterator = ^TCvLineIterator;
TCvLineIterator = packed record
ptr: ^UCHAR;
err: Integer;
plus_delta: Integer;
minus_delta: Integer;
plus_step: Integer;
minus_step: Integer;
end;
image-> imageData is
imageData: PByte;
有人可以幫助我將偏移行轉換爲德爾福?
謝謝!
我們很樂意提供幫助,但請首先表明您的努力。有什麼問題? – 2012-08-01 08:38:09
你的delphi代碼是什麼樣的,你爲什麼打包這個記錄? – 2012-08-01 08:38:41
我想計算偏移量。說實話,我不明白在這一行上做了什麼以及如何用delphi編寫它。我已經從C,方法簽名遷移結構,似乎工作,只有這個抵消 – John 2012-08-01 08:40:21