我在openCV中加载图像。然后我从Point(x1,y1)到Point(x2,y2)画线。如何计算该行的像素?
答案 0 :(得分:0)
尝试使用
int cvInitLineIterator(const CvArr* image, CvPoint pt1, CvPoint pt2, CvLineIterator* line_iterator, int connectivity=8, int left_to_right=0)
您可以找到其说明here
“该函数初始化行迭代器并返回两个端点之间的像素数。两个点必须在图像内部。迭代器初始化后,光栅线上连接两个终点的所有点可以通过连续调用CV_NEXT_LINE_POINT点来检索。使用4连接或8连接的Bresenham算法逐行计算线上的点。“
答案 1 :(得分:0)
您可以使用opencv中提供的Lineiterator
Point p1={x1,y1}; // point 1
Point p2={x2,y2}; // point 2
LineIterator lineIterator1(lineImg, p1, p2,8);
初始化行迭代器后,找到加入p1 and p2
的行中出现的像素数
lineIterator1.count
您可以为此行迭代器使用4或8连接。
你可以在下面的链接中找到line iterator的描述。 http://docs.opencv.org/modules/core/doc/drawing_functions.html#LineIterator