在Python中提取图像上的彩色区域并扭曲到所需的大小,可以通过以下步骤实现:
import cv2
import numpy as np
image = cv2.imread('image.jpg')
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
lower_color = np.array([h_min, s_min, v_min])
upper_color = np.array([h_max, s_max, v_max])
其中,h_min、s_min、v_min是颜色的最小阈值,h_max、s_max、v_max是颜色的最大阈值。可以使用HSV颜色选择器工具来获取所需颜色的阈值范围。
mask = cv2.inRange(hsv_image, lower_color, upper_color)
kernel = np.ones((5, 5), np.uint8)
mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)
这一步可以去除掩膜中的噪点或填充掩膜中的空洞。
contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:
x, y, w, h = cv2.boundingRect(contour)
color_region = image[y:y+h, x:x+w]
这一步将根据轮廓的边界框提取彩色区域。
resized_region = cv2.resize(color_region, (desired_width, desired_height))
其中,desired_width和desired_height是所需的彩色区域大小。
完整代码示例:
import cv2
import numpy as np
image = cv2.imread('image.jpg')
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
h_min, s_min, v_min = 0, 100, 100
h_max, s_max, v_max = 10, 255, 255
lower_color = np.array([h_min, s_min, v_min])
upper_color = np.array([h_max, s_max, v_max])
mask = cv2.inRange(hsv_image, lower_color, upper_color)
kernel = np.ones((5, 5), np.uint8)
mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)
contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:
x, y, w, h = cv2.boundingRect(contour)
color_region = image[y:y+h, x:x+w]
resized_region = cv2.resize(color_region, (desired_width, desired_height))
这样,你就可以在Python中提取图像上的彩色区域并扭曲到所需的大小了。
注意:以上代码示例中的图片路径、颜色阈值、所需的彩色区域大小等需要根据实际情况进行修改。
领取专属 10元无门槛券
手把手带您无忧上云