什么是OpenCV中的imagesc等价物

时间:2013-09-22 19:41:49

标签: python matlab opencv numpy

OpenCV中等效于imagesc的内容是什么?

2 个答案:

答案 0 :(得分:6)

要获得图像中的漂亮色彩,您必须稍微使用OpenCV。在OpenCV 2.46中有一个色彩映射选项。

这是我在c ++中使用的代码。我确信它在Python中非常相似。

mydata.convertTo(display, CV_8UC1, 255.0 / 10000.0, 0); 
applyColorMap(display, display, cv::COLORMAP_JET);
imshow("imagesc",display);

图像数据或矩阵数据存储在mydata中。我知道它的最大值为10000,所以我将其缩小为1,然后乘以CV_8UC1的范围,即255.如果你不知道范围是什么,最好的选择是first convert your matrix in the same way as Matlab does it

修改

这是一个自动规范化数据的版本。

float Amin = *min_element(mydata.begin<float>(), mydata.end<float>());
float Amax = *max_element(mydata.begin<float>(), mydata.end<float>());
Mat A_scaled = (mydata - Amin)/(Amax - Amin);
A_scaled.convertTo(display, CV_8UC1, 255.0, 0); 
applyColorMap(display, display, cv::COLORMAP_JET);
imshow("imagesc",display);

答案 1 :(得分:2)

它在matlab中接近imshow

这取决于你在python中使用的模块:

import cv2
import cv2.cv as cv

I_cv2 = cv2.imread("image.jpg")
I_cv = cv.LoadImage("image.jpg")

#I_cv2 is numpy.ndarray norm can be done easily
I_cv2_norm = (I_cv2-I_cv2.min())/(I_cv2.max()-I_cv2.min())
cv2.imshow("cv2Im scaled", I_cv2_norm)

#Here you have to normalize your cv iplimage as explain by twerdster to norm
cv.ShowImage("cvIm unscaled",I_cv)

我认为接近imagesc的最佳方式是使用cv2.imread将图像加载为numpy.ndarray,然后使用imshow模块中的matplotlib.pyplot函数:

import cv2
from matplolib.pyplot import imshow, show
I = cv2.imread("path")
#signature:
imshow(I, cmap=None, norm=None, aspect=None, interpolation=None,
             alpha=None, vmin=None, vmax=None, origin=None, extent=None,
             **kwargs)

在这里,您可以选择任何您想要的标准化或攀爬(比例)......