Python:选择图像的一部分

Python:选择图像的一部分,python,opencv,keras,computer-vision,Python,Opencv,Keras,Computer Vision,我想从图像中选择以下任意一个数据矩阵。我必须在几个图像上执行此操作,尽管图像布局与图像完全相同,但由于pic的拍摄方式,数据矩阵的位置可能会从图像边缘发生变化 输入图像: 预期产出 感谢您的帮助。考虑到其他图像的凸轮位置相同,图像大小相同,我想这会对您有所帮助 import cv2 img = cv2.imread("scan.jpg") h,w = img.shape[0:2] print(h,w) img = cv2.resize(img,(640,512)) gray = cv2.

我想从图像中选择以下任意一个数据矩阵。我必须在几个图像上执行此操作,尽管图像布局与图像完全相同,但由于pic的拍摄方式,数据矩阵的位置可能会从图像边缘发生变化

输入图像:

预期产出


感谢您的帮助。

考虑到其他图像的凸轮位置相同,图像大小相同,我想这会对您有所帮助

import cv2

img = cv2.imread("scan.jpg")
h,w = img.shape[0:2]
print(h,w)
img = cv2.resize(img,(640,512))

gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
_,thresh = cv2.threshold(gray,127,255,cv2.THRESH_BINARY_INV)

contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
for cnt in contours:
    area = cv2.contourArea(cnt)
    if area > 1000 and area<2000:
         x, y, w, h = cv2.boundingRect(cnt)
         cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)
         mat = img[y:y+h,x:x+w]
         cv2.imwrite("mat.png",mat)
         #cv2.imshow("mat",mat)


cv2.imshow("thresh",ing)
cv2.waitKey(0)
cv2.destroyAllWindows()
导入cv2
img=cv2.imread(“scan.jpg”)
h、 w=img.形状[0:2]
打印(h,w)
img=cv2。调整大小(img,(640512))
灰色=cv2.CVT颜色(img,cv2.COLOR\U BGR2GRAY)
_,thresh=cv2.阈值(灰色,127255,cv2.thresh\u二进制\u INV)
轮廓,层次=cv2.查找轮廓(阈值,cv2.RETR\u外部,cv2.链\u近似值\u无)
对于轮廓中的cnt:
面积=cv2。轮廓面积(cnt)

如果面积>1000,到目前为止您尝试了什么?