python opencv cv.applyColorMap()函数(颜色映射)ColormapTypes【将Intel Realsense D435深度图的黑白图映射为彩色图】
生活随笔
收集整理的這篇文章主要介紹了
python opencv cv.applyColorMap()函数(颜色映射)ColormapTypes【将Intel Realsense D435深度图的黑白图映射为彩色图】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- API
- ColormapTypes
- 完整應用代碼【將深度圖的黑白圖映射為彩色圖】
- map原理
- 能否map CV_24UC3的?
API
def applyColorMap(src, colormap, dst=None): # real signature unknown; restored from __doc__"""applyColorMap(src, colormap[, dst]) -> dst. @brief Applies a GNU Octave/MATLAB equivalent colormap on a given image. 在給定圖像上應用GNU Octave / MATLAB等效色圖。. . @param src The source image, grayscale or colored of type CV_8UC1 or CV_8UC3.源圖像,灰度或彩色的CV_8UC1或CV_8UC3類型。(CV_8UC1指8位無符號單通道矩陣、CV_8UC3指8位無符號三通道矩陣). @param dst The result is the colormapped source image. Note: Mat::create is called on dst.結果是顏色映射的源圖像。 注意:Mat :: create在dst上調用。. @param colormap The colormap to apply, see #ColormapTypes要應用的顏色圖,請參見#ColormapTypesapplyColorMap(src, userColor[, dst]) -> dst. @brief Applies a user colormap on a given image. 將用戶顏色圖應用于給定圖像。. . @param src The source image, grayscale or colored of type CV_8UC1 or CV_8UC3.源圖像,灰度或彩色的CV_8UC1或CV_8UC3類型。. @param dst The result is the colormapped source image. Note: Mat::create is called on dst.結果是顏色映射的源圖像。 注意:Mat :: create在dst上調用。. @param userColor The colormap to apply of type CV_8UC1 or CV_8UC3 and size 256要應用的CV_8UC1或CV_8UC3類型的顏色圖,大小為256"""passcolormap:查看并設置當前顏色圖。
配色:通過將一個顏色方案,分配給一張圖,使得一張黑白圖彩色化。例如,畫油畫,首先是素描出物體的輪廓,接著是給畫出的物體涂上適宜的顏色,這個記錄不同物體對應的顏色的映射,就是配色方案。
在以下代碼中,cv.applyColorMap()函數將一層的深度圖(黑白)映射到三層,打印出來便是彩色圖:
depth_image = cv.applyColorMap(cv.convertScaleAbs(depth_image, alpha=0.03), cv.COLORMAP_JET)ColormapTypes
完整應用代碼【將深度圖的黑白圖映射為彩色圖】
# -*- encoding: utf-8 -*- """ @File : test_191123_將深度圖打印成黑白圖.py @Time : 2019/11/24 15:57 @Author : Dontla @Email : sxana@qq.com @Software: PyCharm """ import pyrealsense2 as rs import cv2 as cv import numpy as nppipeline = rs.pipeline()cfg = rs.config() cfg.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30) cfg.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 30)profile = pipeline.start(cfg)try:while True:fs = pipeline.wait_for_frames()color_frame = fs.get_color_frame()depth_frame = fs.get_depth_frame()if not depth_frame or not color_frame:continuecolor_image = np.asanyarray(color_frame.get_data())depth_image = np.asanyarray(depth_frame.get_data())# 打印成黑白# depth_image = cv.convertScaleAbs(depth_image, alpha=0.03)# 打印成彩色depth_image = cv.applyColorMap(cv.convertScaleAbs(depth_image, alpha=0.03), cv.COLORMAP_JET)window = cv.namedWindow('window', cv.WINDOW_AUTOSIZE)cv.imshow('window', depth_image)cv.waitKey(1) finally:pipeline.stop()map原理
具體是怎么map的暫時不用管吧,畢竟還沒有精力到去看源碼的地步,但猜測,對應每一種ColormapType,都有公式使被map的矩陣數值與map后的顏色的數值一一對應,執行前先判斷是CV_8UC1還是CV_8UC3,到時它直接計算就好了。
能否map CV_24UC3的?
貌似也能,代碼:
# -*- encoding: utf-8 -*- """ @File : test_191123_將深度圖打印成黑白圖.py @Time : 2019/11/24 15:57 @Author : Dontla @Email : sxana@qq.com @Software: PyCharm """ import pyrealsense2 as rs import cv2 as cv import numpy as nppipeline = rs.pipeline()cfg = rs.config() cfg.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30) cfg.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 30)profile = pipeline.start(cfg)try:while True:fs = pipeline.wait_for_frames()color_frame = fs.get_color_frame()depth_frame = fs.get_depth_frame()if not depth_frame or not color_frame:continuecolor_image = np.asanyarray(color_frame.get_data())depth_image = np.asanyarray(depth_frame.get_data())# 打印成黑白# depth_image = cv.convertScaleAbs(depth_image, alpha=0.03)# 打印成彩色# depth_image = cv.applyColorMap(cv.convertScaleAbs(depth_image, alpha=0.03), cv.COLORMAP_JET)# 測試是否能map CV_24UC3的color_image = cv.applyColorMap(color_image, cv.COLORMAP_JET)window = cv.namedWindow('window', cv.WINDOW_AUTOSIZE)cv.imshow('window', color_image)cv.waitKey(1) finally:pipeline.stop()運行后正常的color圖變成這樣了。。。
只不過,不知道那是不是我所理解的CV_24UC3,因為網上查不到CV_24UC3,還是CV_24UC3根本就是CV_8UC3,不知道我的理解是否是錯誤的。
參考文章1:Matlab函數解釋:colormap
參考文章2:cv::ColormapTypes
參考文章3:Intel Realsense D435 將深度圖的灰度圖映射為彩色圖,打印輸出灰度圖或彩色圖
總結
以上是生活随笔為你收集整理的python opencv cv.applyColorMap()函数(颜色映射)ColormapTypes【将Intel Realsense D435深度图的黑白图映射为彩色图】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Intel Realsense D435
- 下一篇: Intel Realsense 图像投影