从下载的nyu_depth_v2_labeled.mat中提取的RGB-D图,得到的rawdepth有黑边,请问这该怎么处理?
NYU数据集RGB图和Depth图是对齐,但是有黑边的话就不是对齐的了吧。
【以下回答由 GPT 生成】
我了解您的问题。要处理NYU数据集中提取的rawdepth图片以去除黑边,您可以执行以下步骤:
import numpy as np
import cv2
rgb_image = cv2.imread('path_to_rgb_image.jpg')
depth_image = cv2.imread('path_to_depth_image.png', cv2.IMREAD_ANYDEPTH)
请记得将path_to_rgb_image.jpg
和path_to_depth_image.png
替换为实际图像文件的路径。
gray_image = cv2.cvtColor(rgb_image, cv2.COLOR_BGR2GRAY)
_, threshold = cv2.threshold(gray_image, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
contours, _ = cv2.findContours(threshold, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
largest_contour = max(contours, key=cv2.contourArea)
x, y, w, h = cv2.boundingRect(largest_contour)
这将通过阈值化灰度图像和查找最大轮廓来找到黑边区域。
rgb_image_cropped = rgb_image[y:y+h, x:x+w]
depth_image_cropped = depth_image[y:y+h, x:x+w]
这将通过裁剪原始RGB和Depth图像以仅保留黑边外的区域来去除黑边。
cv2.imwrite('path_to_cropped_rgb_image.jpg', rgb_image_cropped)
cv2.imwrite('path_to_cropped_depth_image.png', depth_image_cropped)
请记得将path_to_cropped_rgb_image.jpg
和path_to_cropped_depth_image.png
替换为您希望保存图像的路径。
现在,您应该有已经去除黑边的RGB和Depth图像。这样,它们应该能够准确对齐了。
如果上述步骤没有解决您的问题,请让我知道,我将尽力提供进一步的帮助。
题主 有黑边的话也应该是对齐的,最起码在二维图上看,xy位置是大致对应的,所以可以读取深度图像上的z值不为零的点的xy坐标,根据这个坐标去获得rgb图像上的相对应xy上的像素点。进行后续操作
深度图像不需要进行黑边的裁剪工作。
我在做问答任务,需要采纳数量,希望题主给我个采纳鼓励一下。谢谢