【问题标题】:Opencv: Region of interest(ROI) for different dpi imagesOpencv:不同dpi图像的感兴趣区域(ROI)
【发布时间】:2017-06-05 03:33:30
【问题描述】:

我正在读取图像并通过传递矩形的左上角坐标和右下角坐标然后裁剪图像来查找感兴趣的区域。一些客户端提供相同图像的 100 dpi、200 dpi 或 400 dpi 图像的样本。在这类图像中,当图像具有不同 dpi 时,输入坐标位于其他位置。我正在做template matching 任务,我给出了包含文本的小模板。找到文本后,将边界框绘制到匹配的部分。从那个边界框参考中,我必须从图像中找到父矩形,然后保存在文件夹中。对于 100 dpi 的图像,它可以工作,但是一旦我用不同的 dpi 矩形更改图像就会缩小。图片是:

模板匹配链接中更新了以下代码:

startX = abs(startX - 113)
startY = abs(startY - 5)
endX = abs(endX + 117)
endY = abs(endY + 208)
cv2.rectangle(image, (startX, startY), (endX, endY), (0, 0, 255), 2)

以下代码用于查找矩形和裁剪:

first = [660,1000]
last = [1030,1400]
i = 1
for imagePath in glob.glob(args["images"] + "/*.jpg"):
    print imagePath
    image = cv2.imread(imagePath)

    cropped = ROI_extract(first,last,image)
    savingName = "SGBAU_pink/pnr" + str(i) + ".jpg"
    cv2.imwrite(savingName, cropped)
    i = i + 1
    cv2.imshow("Cropped",cropped)
    cv2.waitKey(0)

如何解决问题以找到不同 dpi 图像的实际感兴趣区域并找到准确的 ROI?给出一些粗略的想法来解决它。

【问题讨论】:

    标签: python image opencv


    【解决方案1】:

    OpenCV 并不真正关心 DPI,它只是使用 Mat 来包含图像。我不确定我是否理解您要编译的内容,但如果您有以英寸为单位的坐标并且您知道源 DPI,您可以将它们转换为行和列:

    x_px = x_inch * DPI

    y_px = y_inch * DPI

    否则,如果所有图像的比例相同但分辨率不同,您可以简单地将它们缩放到一个参考尺寸(即有效的 100dpi 分辨率)。为此,您可以在 OpenCV 中使用 resize 功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-22
      • 2016-04-25
      • 2011-09-27
      • 2013-03-03
      • 1970-01-01
      • 2018-01-15
      • 2012-04-25
      • 2014-09-30
      相关资源
      最近更新 更多