Python:OpenCV-选择图像的区域

Python:OpenCV-选择图像的区域,python,opencv,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],但它不起作用 图像大小为1

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

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


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

将其更改为:

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

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

将其更改为:

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

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

您可能正在寻找:

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


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

您可能正在寻找:

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


如果您想要一个相对公式:

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()

如果您想要一个相对公式:

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()

您给出的尺寸是否正确?你说图像的分辨率是1240乘626,但你试图访问1225:1512。ROI真的很混乱。首先是y坐标,然后是x坐标。在“图像Roi”部分的这个示例中,我不理解x坐标。@RamónWilhelm
y
坐标初始化错误。检查答案您给出的尺寸是否正确?你说图像的分辨率是1240乘626,但你试图访问1225:1512。ROI真的很混乱。首先是y坐标,然后是x坐标。在“图像Roi”部分的这个示例中,我不理解x坐标。@RamónWilhelm
y
坐标初始化错误。查看答案对不起,我只收到一张空白(白色)图像:(对不起,我只收到一张空(白色)图像:(