python - 图像定位 OpenCV

标签 python image opencv

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

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

https://snag.gy/YaAWdg.jpg

对于初学者;显示“这里”的小文本必须距屏幕顶部 151 像素。

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

最后;必须在 Nose 上第 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.

最佳答案

考虑切换操作顺序以避免重复操作。一点点数学知识和视角的改变应该可以解决问题:

1.) Resize图像使得从“这里”到下巴的距离为 631px。

2.) 使用 region of interest裁剪图像,使“此处”距屏幕顶部 151 像素。

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。

关于python - 图像定位 OpenCV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45718043/

相关文章:

python - 使用列表理解更改嵌套列表中的第一项

java - OpenCV - 从图像中去除噪声

Python程序直到键盘中断才会响应

python - PyMongo 和 Flask-PyMongo 库之间的区别

c# - 如何仅将 8 位 PNG 图像读取为 8 位 PNG 图像?

c++ - 在 Windows C++ 中从 JPG/PNG 文件创建 BITMAPINFO

未找到 Android native 库

java - 使用 OpenCV 在 Android 上显示图像

python - 多个 python 装饰器检索原始函数

javascript - 显示图像加载进度条