gpt4 book ai didi

python - 使用OpenCV和Python裁剪图像轮廓

转载 作者:行者123 更新时间:2023-12-02 17:08:52 27 4
gpt4 key购买 nike

我正在尝试找出医学图像重要部分的图像尺寸,如下所示。我正在使用OpenCV和Python。

enter image description here

我必须先裁剪图像,以消除图像周围的黑色空间。
这是我的代码:

import cv2
import numpy as np

img = cv2.imread('image-000.png')

height, width, channels = img.shape #shape of original image

height_2 = height * 7/100
width_2 = width * 15/100

img[0:height_2, 0:width_2] = [0, 0, 0] #get rid of the watermark on the top left

gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
_,thresh = cv2.threshold(gray,15,255,cv2.THRESH_BINARY)

_, contours, _= cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnt = contours[0]

x,y,w,h = cv2.boundingRect(cnt)

crop = img[y:y+h,x:x+w]

height_2, width_2, channels_2 = crop.shape
print "height: " + repr(height_2)
print "width: " + repr(width_2)


cv2.waitKey(0)
cv2.destroyAllWindows()

这段代码适用于上面的图片:

enter image description here

但是,当我想对其他图像使用相同的代码时,它将不起作用。
例如,这不起作用:

enter image description here

你知道我做错了吗?
您的帮助将不胜感激!

最佳答案

问题是在第二张图像中找到的轮廓多于1个。只需将您的cnt = contours[0]行替换为cnt = max(contours, key=cv2.contourArea),它将为您提供最大的轮廓。

关于python - 使用OpenCV和Python裁剪图像轮廓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48487945/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com