だから結局、私はあなたがここに見ることができる解決策を見つけた:
def Depthcallback(self,msg_depth): # TODO still too noisy!
try:
# The depth image is a single-channel float32 image
# the values is the distance in mm in z axis
cv_image = self.bridge.imgmsg_to_cv2(msg_depth, "32FC1")
# Convert the depth image to a Numpy array since most cv2 functions
# require Numpy arrays.
cv_image_array = np.array(cv_image, dtype = np.dtype('f8'))
# Normalize the depth image to fall between 0 (black) and 1 (white)
# http://docs.ros.org/electric/api/rosbag_video/html/bag__to__video_8cpp_source.html lines 95-125
cv_image_norm = cv2.normalize(cv_image_array, cv_image_array, 0, 1, cv2.NORM_MINMAX)
# Resize to the desired size
cv_image_resized = cv2.resize(cv_image_norm, self.desired_shape, interpolation = cv2.INTER_CUBIC)
self.depthimg = cv_image_resized
cv2.imshow("Image from my node", self.depthimg)
cv2.waitKey(1)
except CvBridgeError as e:
print(e)
はしかし、結果は私がROSのimage_viewノードから取得するものとしてその完璧ではないですが、それまだかなり受け入れられています!
少なくともC++バージョンでは、OpenCVは '32FC1'画像を表示するとあまりよくありません。適切な範囲(0〜255)にスケーリングして表示目的で '8UC1'に変換してみてください。 – mikkola
私は(ここに)指示(https://answers.ros.org/question/58902/how-to-store-the-depth-data-from-kinectcameradepth_registreredimage_raw-as-gray-scale)に従いました。 -画像/)。問題は、結果がROSの** image_view **パッケージからノード** image_view **で取得した画像と比べてかなり騒がしいことです。 – lefos99