如何保存带轮廓的OpenCV图像
How to save OpenCV image with contour
我想用轮廓保存图像
这是我的代码:
img = cv2.imread('123.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, binary = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY)
image, contours, _ = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for cnt in contours:
# some code in here
cv2.imwrite('234.jpg', cnt)
非常感谢。
您要做的是创建一个蒙版,在上面绘制轮廓,然后用它剪掉图片的其余部分,反之亦然。例如,based on this tutorial:
(contours, _) = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
mask = np.ones(img.shape[:2], dtype="uint8") * 255
# Draw the contours on the mask
cv2.drawContours(mask, contours, -1, 0, -1)
# remove the contours from the image and show the resulting images
img = cv2.bitwise_and(img, img, mask=mask)
cv2.imshow("Mask", mask)
cv2.imshow("After", img)
cv2.waitKey(0)
将轮廓保存为图像的最简单方法是取出其 ROI(图像区域)并使用 imwrite() 保存它,如下所示 -
首先使用cv2.boundingRect得到一组点的边界矩形(即等高线):
x, y, width, height = cv2.boundingRect(contours[i])
然后您可以使用 NumPy 索引从图像中获取投资回报率:
roi = img[y:y+height, x:x+width]
并将 ROI 保存到新文件中:
cv2.imwrite("roi.png", roi)
我试了很多次,终于可以了:
image= cv2.imread('muroprueba.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
ret, binary = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY)
cnts, herarchy = cv2.findContours(thresh,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(image,cnts,-1,(0,255,0),1)
cv2.imshow('image1',image)
cv2.waitKey(0)
cv2.imwrite('F:\caso1.jpg',image) #Save the image
cv2.destroyAllWindows()
我想用轮廓保存图像
这是我的代码:
img = cv2.imread('123.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, binary = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY)
image, contours, _ = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for cnt in contours:
# some code in here
cv2.imwrite('234.jpg', cnt)
非常感谢。
您要做的是创建一个蒙版,在上面绘制轮廓,然后用它剪掉图片的其余部分,反之亦然。例如,based on this tutorial:
(contours, _) = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
mask = np.ones(img.shape[:2], dtype="uint8") * 255
# Draw the contours on the mask
cv2.drawContours(mask, contours, -1, 0, -1)
# remove the contours from the image and show the resulting images
img = cv2.bitwise_and(img, img, mask=mask)
cv2.imshow("Mask", mask)
cv2.imshow("After", img)
cv2.waitKey(0)
将轮廓保存为图像的最简单方法是取出其 ROI(图像区域)并使用 imwrite() 保存它,如下所示 -
首先使用cv2.boundingRect得到一组点的边界矩形(即等高线):
x, y, width, height = cv2.boundingRect(contours[i])
然后您可以使用 NumPy 索引从图像中获取投资回报率:
roi = img[y:y+height, x:x+width]
并将 ROI 保存到新文件中:
cv2.imwrite("roi.png", roi)
我试了很多次,终于可以了:
image= cv2.imread('muroprueba.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
ret, binary = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY)
cnts, herarchy = cv2.findContours(thresh,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(image,cnts,-1,(0,255,0),1)
cv2.imshow('image1',image)
cv2.waitKey(0)
cv2.imwrite('F:\caso1.jpg',image) #Save the image
cv2.destroyAllWindows()