gpt4 book ai didi

python - 分割后将颜色空间从 RGB 更改为 HSV(OpenCv Python)

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

我正在分割图像,然后将其转换为 HSV 格式。但是在将其转换为 HSV 并分离出每个 channel 之后,分割区域的粒度就会丢失。以下是分段代码。

import cv2
from os import listdir
from os.path import isfile, join
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt

path = "C:/Users/Intern/Desktop/dataset/rust images/"
files_test = [f for f in listdir(path+ 'Input/') if isfile(join(path+ 'Input/', f))]
for img_name in files_test:
img = cv2.imread(path + "Input/" + img_name)
gray_img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
gray_blur = cv2.GaussianBlur(gray_img, (7, 7), 0)
adapt_thresh_im = cv2.adaptiveThreshold(gray_blur, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11, 20)
max_thresh, thresh_im = cv2.threshold(gray_img, 100, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)
thresh = cv2.bitwise_or(adapt_thresh_im, thresh_im)
kernel = np.ones((3,3),np.uint8)
opening = cv2.morphologyEx(thresh,cv2.MORPH_OPEN,kernel, iterations = 2)
sure_bg = cv2.dilate(thresh,kernel,iterations=2)
img[sure_bg == 0] = [0,0,0]
cv2.imwrite(path + "Segmented/" + img_name, img)

以下是输入图像。 Input

以下是相应的输出。

Output
现在,在一个新程序中,我尝试读取此输出并将其转换为 HSV 格式。以下是代码。
import cv2
from os import listdir
from os.path import isfile, join
import numpy as np

path = "C:/Users/Intern/Desktop/dataset/rust images/"
files_test = [f for f in listdir(path+ "Segmented/") if isfile(join(path+ "Segmented/", f))]
for img_name in files_rust:
img = cv2.imread(path + "Segmented/" + img_name)
img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
print img_hsv.shape
h, s, v = cv2.split(img_hsv)
cv2.imshow("hsv image", s)
cv2.waitKey(0)

以下是转换为 HSV 后的输出。
Output

我们可以观察到,与原来的相比,黑色空间的粒度有所减少。我怎么解决这个问题?

谢谢您的帮助。

照片取自 4

最佳答案

你的代码显示你申请了GaussianBlur() , cv2.adaptiveThreshold()cv2.morphologyEx() ,所有这些过滤可能会使结果图像中的细节在某种程度上丢失。

如果您需要将色彩空间从 BGR 转换为 HSV,cv2.cvtColor(img, cv2.COLOR_BGR2HSV) ,那么您可以在将图像转换为 HSV 之前以及在 HSV 中进一步处理之前进行最少的预处理以减少失真。色彩空间。

关于python - 分割后将颜色空间从 RGB 更改为 HSV(OpenCv Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44257117/

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