gpt4 book ai didi

python - 为什么我的轮廓没有关闭(Python,OpenCV)?

转载 作者:行者123 更新时间:2023-12-02 17:16:49 25 4
gpt4 key购买 nike

我一直试图在opencv中编写脚本来进行一些灰度图像处理。但是,在阈值图像上查找和绘制轮廓时,我一直遇到问题。查找轮廓很容易,并且给了我想要的结果。但是,当我按面积选择最大的轮廓并打算单独绘制时,会得到“分解”得多的结果。我一直在尝试找出导致该问题的代码出了什么问题,但坦率地说无法解决。其他人也有类似的经验或可能的解决方案吗?
我的(非常混乱)的当前代码是:

import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
import os
import math as m
import imutils as imt

read_directory = r'E:\Other\Ultrasound_Trad_Alg\Input'
write_directory = r'E:\Other\Ultrasound_Trad_Alg\Output'
os.chdir(read_directory)
image_files = os.listdir(read_directory)

for image_file in image_files:
input_image_grey = cv.imread(image_file,0)
input_image_color = cv.imread(image_file)
input_image_color_2 = input_image_color.copy()

#Initial Black Background Masking Process:
blurred_input = cv.GaussianBlur(input_image_grey,(7,7),0)
_,thresholded_image_binary = cv.threshold(blurred_input,0,255,cv.THRESH_BINARY)
input_contours,hierarchy = cv.findContours(thresholded_image_binary,cv.RETR_EXTERNAL,cv.CHAIN_APPROX_SIMPLE)
chosen_input_contour = max(input_contours, key=cv.contourArea)
input_mask = np.zeros_like(input_image_grey)
cv.drawContours(input_mask, chosen_input_contour, -1, 255, -1)

#For Testing and Visualization:
cv.drawContours(input_image_color, chosen_input_contour, -1, (0,255,0), 1)
cv.drawContours(input_image_color_2, input_contours, -1, (0,255,0), 1)
cv.imshow("test1",thresholded_image_binary)
cv.imshow("test2",input_image_color)
cv.imshow("test3",input_image_color_2)
cv.imshow("mask",input_mask)
print(cv.isContourConvex(chosen_input_contour))
print(cv.contourArea(chosen_input_contour))
cv.waitKey(0)
当我运行此代码时,我得到了以下4张图像集,以演示我在说什么:
/image/IP7Ip.jpg
可以看出,最初的轮廓集几乎正是我要寻找的轮廓。但是,通过隔离图像中最大的轮廓并将其单独绘制,我得到了对我不起作用的分解轮廓。我还检查了轮廓区域,它显示我应该正好为5,这意味着也不应有任何微小的隐藏轮廓与结果混淆。有什么想法吗?

最佳答案

我认为您在Python / OpenCV代码中遇到的问题是:

input_mask = np.zeros_like(input_image_grey)

它应该是
input_mask = np.zeros_like(thresholded_image_binary)

二进制蒙版必须与二进制图像(而不是灰度图像)具有相同的位深度。那就是它必须是1位而不是8位。
看看是否能解决问题。

关于python - 为什么我的轮廓没有关闭(Python,OpenCV)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64322922/

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