图像定位OpenCV

时间:2017-08-16 15:50:12

标签: python image opencv

这可能被称为“感兴趣的区域”我不太确定。但是,我想做的事情很容易解释。

我有一张照片需要与网格对齐。

https://snag.gy/YaAWdg.jpg

首先;显示“here”的小文字必须是屏幕顶部的151px。

下一步;从“这里”到下巴的第​​8位必须是631px

最后;必须在鼻子28号线的中间画一条直线。

如果我没有意义,请告诉我详细说明。

我有以下想法(这是伪代码)

它只是循环,直到满足要求的调整大小功能,很像暴力强迫,但这就是我能想到的..

即..

while (top.x,y = 151,0)
img.top-=1  ## this puts the image one pixel above until reaching the desired positioning
while (top.x,y & eight.x,y != 631)
resize += 1 # resize by 1 pixel until the height is reached
## center the nose
image.position = nose.

2 个答案:

答案 0 :(得分:1)

考虑切换操作顺序以防止需要迭代。一点点的数学和观点的改变应该可以解决问题:

1。)Resize图像,以便距离"这里"下巴是631px。

2。)使用region of interest裁剪图像,以便" here"距屏幕顶部151px。

3.)绘制line

修改

假设您已经定义了所有适当的约束,affine transform in OpenCV可以将图像变形为正确的填充。

如果你需要做的只是一个简单的比例...首先用this之类的东西计算点之间的距离。

Point2f a(10,10);
Point2f b(100,100);

float euclideanDist(Point& p, Point& q) {
    Point diff = p - q;
    return cv::sqrt(diff.x*diff.x + diff.y*diff.y);
}

然后创建比例因子以调整图像大小

float scaleFactor = euclideanDist(a,b) / 631;
cv::resize(input, output, cv::Size(), scaleFactor, scaleFactor, cv::INTER_LINEAR);

使用scaleFactor的两个实例将在X& Y中创建统一缩放。使用两个不同的比例因子将独立地缩放X和Y.

答案 1 :(得分:0)

查看OpenCV的教程,对于带有面孔的图像,您可以使用Haar Cascades来简化工作。 (https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_objdetect/py_face_detection/py_face_detection.html#face-detection

否则,请查看ROI(感兴趣区域)以提取区域并在其上应用算法(调整大小或裁剪)