Python:OpenCV-选择图像区域

时间:2018-07-30 13:14:07

标签: python opencv

我要选择放置数据矩阵的区域。

import cv2
from matplotlib import pyplot as plt

img1 = cv2.imread('C:\\Users\\MyAccount\\Desktop\\datamatrix.png')
dmc = img1[300:588, 1225:1512]
plt.imshow(dmc)
plt.show()

我仅收到一个细长的白色区域,但没有收到该矩阵的单个区域。 ROI格式为[y:y + h,x:x + w],但无法正常工作。

图片的尺寸为1240 x 626。

矩阵具有以下属性: 左侧= 938,顶部= 323,宽度= 287,高度= 288。

enter image description here

3 个答案:

答案 0 :(得分:1)

您在代码中指定的坐标与您所描述的不一致。

将它们更改为:

dmc = img1[323:611, 938:1225]

答案 1 :(得分:1)

您对[y:y+h, x:x+w]的ROI-Formular是正确的,但是y坐标上的初始点是错误的,这就是为什么要裁剪图像的白色区域。

您可能正在寻找:

dmc = im[13:13+287, 938:938+287]
cv2.imshow('dmc', dmc)

结果:

enter image description here

答案 2 :(得分:1)

如果您希望有一个相对公式:

import cv2

left=938
top=323
width=287
height=288

img = cv2.imread('temp.png', 0)
imgh, imgw = img.shape[:2]
# compute starting position of top
img = img[(imgh/2-height)/2:(imgh/2-height)/2+height, left:left+width]
cv2.imshow("result", img)
cv2.waitKey()

Result Image