查找图像中对象的边界 python?
Finding boundary of object in image python?
我试图找到图片中对象的边界并在图像上显示轮廓,这是我的问题。我这里有下面的图片:
我做了以下操作来提取轮廓并将它们绘制在图像上:
import cv2
import numpy as np
img = cv2.imread('/home/rama/Downloads/rice.jpg')
rsz_img = cv2.resize(img, None, fx=0.25, fy=0.25) # resize since image is huge
gray = cv2.cvtColor(rsz_img, cv2.COLOR_BGR2GRAY) # convert to grayscale
plt.imshow(gray)
# threshold to get just the signature
cnts, hierarchy= cnts, hierarchy= cv2.findContours(gray.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
for contour in cnts:
print(cv2.boundingRect(contour))
cv2.imshow('img',img)
cv2.imshow('contour', cv2.boundingRect(contour))
cv2.waitKey(0)
cv2.destroyAllWindows()
给我的就是上图,没有边界。
如何绘制在图像上找到的边界?
编辑解决方案:
我做了以下事情:
cnts, hierarchy= cv2.findContours(gray.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
for contour in cnts:
print(cv2.boundingRect(contour))
cv2.drawContours(img,cnts,-1,(125,125,0),3 )
cv2.imshow('contours',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
我第一次看到它,当我 运行 第二次时,我再也看不到图像 window 了?我第一次看到正确的边界!
您需要使用 drawContours() 函数。
看这里:https://docs.opencv.org/3.3.1/d4/d73/tutorial_py_contours_begin.html
我试图找到图片中对象的边界并在图像上显示轮廓,这是我的问题。我这里有下面的图片:
我做了以下操作来提取轮廓并将它们绘制在图像上:
import cv2
import numpy as np
img = cv2.imread('/home/rama/Downloads/rice.jpg')
rsz_img = cv2.resize(img, None, fx=0.25, fy=0.25) # resize since image is huge
gray = cv2.cvtColor(rsz_img, cv2.COLOR_BGR2GRAY) # convert to grayscale
plt.imshow(gray)
# threshold to get just the signature
cnts, hierarchy= cnts, hierarchy= cv2.findContours(gray.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
for contour in cnts:
print(cv2.boundingRect(contour))
cv2.imshow('img',img)
cv2.imshow('contour', cv2.boundingRect(contour))
cv2.waitKey(0)
cv2.destroyAllWindows()
给我的就是上图,没有边界。
如何绘制在图像上找到的边界?
编辑解决方案:
我做了以下事情:
cnts, hierarchy= cv2.findContours(gray.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
for contour in cnts:
print(cv2.boundingRect(contour))
cv2.drawContours(img,cnts,-1,(125,125,0),3 )
cv2.imshow('contours',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
我第一次看到它,当我 运行 第二次时,我再也看不到图像 window 了?我第一次看到正确的边界!
您需要使用 drawContours() 函数。
看这里:https://docs.opencv.org/3.3.1/d4/d73/tutorial_py_contours_begin.html