[英]OpenCV Crop Rectangle
UPDATE **尝试添加一些看似有意义的代码,但仍然无法达到预期的效果。
您好,我对裁剪所有能够使用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))
我添加的新代码将导致此输出。
如上面的代码所示,我尝试将所有矩形的坐标添加到数组中,然后尝试迭代并将其编译到单个图像上。 从理论上讲,我认为这应该可行,但是并不能达到预期的效果。 任何帮助将不胜感激
谢谢!
简单地说:没有父级的轮廓是外轮廓。
回答此问题可能有助于您理解如何使用此“层次结构”。 那里的代码在C ++中,但是在Python中应该类似。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.