imagesc
在 OpenCV中相当于什么?
问问题
5557 次
2 回答
7
要在 imagesc 中获得漂亮的颜色,您必须稍微使用一下 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。如果你不知道范围是什么,最好的选择是首先以同样的方式转换你的矩阵正如 Matlab 所做的那样。
编辑
这是一个自动规范化数据的版本。
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);
于 2013-09-22T22:54:20.363 回答
2
imshow
在matlab中很接近。
这取决于您在 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)
在这里你可以选择你想要的任何东西,如果标准化或你的clims(规模)......
于 2013-09-22T20:04:43.523 回答