Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python OpenCV裁剪矩形_Python_Opencv - Fatal编程技术网

Python OpenCV裁剪矩形

Python OpenCV裁剪矩形,python,opencv,Python,Opencv,更新**尝试添加一些似乎有意义的代码,但仍然没有给我想要的效果 您好,我对裁剪我能够使用OpenCV的矩形函数分离的图像的所有内容感兴趣。一旦我做到这一点,我希望能够适用于白色背景裁剪的内容 这是我的原始图像 我能够使用矩形隔离的图像如下所示: 我目前使用的代码如下: import numpy as np import cv2 im = cv2.imread('1.jpg') im3 = im.copy() gray = cv2.cvtColor(im,cv2.COLOR_BGR2GRA

更新**尝试添加一些似乎有意义的代码,但仍然没有给我想要的效果

您好,我对裁剪我能够使用OpenCV的矩形函数分离的图像的所有内容感兴趣。一旦我做到这一点,我希望能够适用于白色背景裁剪的内容

这是我的原始图像

我能够使用矩形隔离的图像如下所示:

我目前使用的代码如下:

import numpy as np
import cv2

im = cv2.imread('1.jpg')
im3 = im.copy()

gray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray,(5,5),0)
thresh = cv2.adaptiveThreshold(blur,255,1,1,11,2)




contours,hierarchy = cv2.findContours(thresh,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)

squares = []

for cnt in contours:
    if cv2.contourArea(cnt)>50:
        [x,y,w,h] = cv2.boundingRect(cnt)

        if  h>28 and h<35:
            cv2.rectangle(im,(x,y),(x+w,y+h),(0,0,255),2)
            cv2.imwrite('norm1.jpg',im)
crop_img = [[[255, 255, 255] for x in xrange(377)] for x in xrange(377) ] #newly added code starts here
for s in squares:
     s = squares[0]
     x = s[0]
     y = s[1]
     w = s[2]
     h = s[3]
     img = im[y:y+h,x:x+w]
          for col in range(y,y+h):
              for row in range(x,x+w):
                  if img[col - y][row - x].tolist() == [0,0,0]:
                      crop_img[col][row] = [0,0,0]


cv2.imwrite("cropped.jpg", np.array(crop_img))
将numpy导入为np
进口cv2
im=cv2.imread('1.jpg')
im3=im.copy()
灰色=cv2.CVT颜色(im、cv2.COLOR\U BGR2GRAY)
模糊=cv2.高斯模糊(灰色,(5,5),0)
阈值=cv2。自适应阈值(模糊,255,1,1,11,2)
等高线,层次=cv2.findContours(阈值,cv2.RETR\u列表,cv2.CHAIN\u近似值\u简单)
正方形=[]
对于轮廓中的cnt:
如果cv2.轮廓面积(cnt)>50:
[x,y,w,h]=cv2.boundingRect(cnt)

简单来说,若h>28,h,那个么并没有父对象的轮廓就是一个外轮廓

回答可能有助于您了解如何使用此“层次结构”。C++中有代码,但在Python中应该类似。