gpt4 book ai didi

python-3.x - 如何从某个 ROI 中提取所有像素值,然后将其存储为 CSV 文件,然后再次使用该 csv 文件取回该 ROI

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

After applying mask original image

import cv2
import dlib
import numpy as np
img = cv2.imread("Aayush.jpg")
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
msk = np.zeros_like(img_gray)
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")
faces = detector(img_gray)
for face in faces:
landmarks = predictor(img_gray, face)
lp = []
for n in range(0,68):
x = landmarks.part(n).x
y = landmarks.part(n).y
lp.append((x,y))
p = np.array(lp, np.int32)
#cv2.circle(img, (x,y), 3, (0, 0, 255), -1)
convexhull = cv2.convexHull(p)
#cv2.polylines(img, [convexhull], True, (255,0,0), 3)
cv2.fillConvexPoly(msk, convexhull, 255)
img1 = cv2.bitwise_and(img, img, mask = msk)

img1 包含一个完整的黑色图像,从 img 中切出面部,我只需要面部部分的像素值而不是完整的图像

最佳答案

由于问题本身没有提供原始图像和掩码。我假设一个简单的输入图像和一个带有圆形腔的掩模图像为:

mask image enter image description here

这里的掩码是一个单 channel 矩阵,值为255在中央腔内。要仅获取腔内的像素信息,您可以使用以下 numpy 操作:

pixel_info = original_image[mask == 255]
# You may need to convert the numpy array to Python list.
pixel_info_list = pixel_info.tolist()

现在你可以序列化 list转换为您想要的任何格式(在本例中为 csv。)

完整代码:
import cv2
import numpy as np

original_image = cv2.imread("/path/to/lena.png")
mask = np.zeros(original_image.shape[:2], dtype=original_image.dtype)

mask = cv2.circle(mask, (256, 256), 100, [255], -1)

pixel_info = original_image[mask == 255]
pixel_info_list = pixel_info.tolist()

关于python-3.x - 如何从某个 ROI 中提取所有像素值,然后将其存储为 CSV 文件,然后再次使用该 csv 文件取回该 ROI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59328286/

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