是否有一种简单的方法来显示灰度的彩色位图HTML/CSS?
它不需要与IE兼容(我想它不会) - 如果它在FF3和/或Sf3中工作,这对我来说已经足够了.
我知道我可以用SVGCanvas和Canvas 来做这件事,但现在看起来好像很多工作.
有一个真正懒惰的人这样做的方法吗?
我正在尝试使用matplotlib.pyplot.imshow()显示灰度图像.我的问题是灰度图像显示为色彩图.我需要灰度,因为我想用颜色在图像上绘制.
我在图像中读取并使用PIL的Image.open()转换为灰度.转换("L")
image = Image.open(file).convert("L")Run Code Online (Sandbox Code Playgroud)
然后我将图像转换为矩阵,以便我可以轻松地使用
matrix = scipy.misc.fromimage(image, 0)Run Code Online (Sandbox Code Playgroud)
但是,当我这样做的时候
figure()
matplotlib.pyplot.imshow(matrix)
show()Run Code Online (Sandbox Code Playgroud)
它使用色彩图显示图像(即它不是灰度).
我在这做错了什么?
我想要一个彩色的图标(并将是一个链接)并将其转换为灰度,直到用户将鼠标放在图标上(然后它将为图像着色).
这可能吗,并且以IE和Firefox支持的方式?
我在网上搜索了很多,但我找不到一个跨浏览器解决方案来淡化css背景图像到灰度和背面.
唯一可行的解决方案是应用CSS3过滤器灰度:
-webkit-filter: grayscale(100%);
Run Code Online (Sandbox Code Playgroud)
但这适用于Chrome v.15 +和Safari v.6 +(你可以在这里看到:http://css3.bradshawenterprises.com/filters/ )
在线的许多页面都谈到了灰色元素的解决方案:
filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale"); /* Firefox 10+, Firefox on Android */
filter: gray; /* IE6-9 */
Run Code Online (Sandbox Code Playgroud)
(你可以在这里看到:http://www.karlhorky.com/2012/06/cross-browser-image-grayscale-with-css.html)
但实际上它似乎不适用于CSS背景图像,就像webkit过滤器那样.
是否有任何解决方案(可能使用jquery?)来破解在不太先进的浏览器上缺少对过滤器的支持?
有没有办法将图像转换为每像素格式16位灰度,而不是将每个r,g和b分量设置为亮度.我目前有一个文件bmp.
Bitmap c = new Bitmap("filename");
Run Code Online (Sandbox Code Playgroud)
我想要一个Bitmap d,即c的灰度版本.我确实看到一个包含System.Drawing.Imaging.PixelFormat的构造函数,但我不明白如何使用它.我是Image Processing和相关C#库的新手,但对C#本身有一定的经验.
任何帮助,参考在线来源,提示或建议将不胜感激.
编辑:d是c的灰度版本.
我是这个网站的新手,我提出了一个关于Android的问题.
有没有办法将位图转换为灰度?我知道如何绘制灰度位图(使用画布操作:http://www.mail-archive.com/android-developers@googlegroups.com/msg38890.html)但我真的需要灰色的实际位图(或者至少可以在以后转换为位图的东西).我是否必须手动实现(逐像素操作)?
我搜索了很多,但仍然找不到.谁知道一个简单/有效的方法呢?
非常感谢!
如何使用(r + g + b)/ 3方法将RGB图像(3个通道)转换为灰度图像?我查看了一个示例页面:http://www.imagemagick.org/Usage/color_mods/#grayscale 但是所需的方法:
convert test.png -fx '(r+g+b)/3' gray_fx_average.png
Run Code Online (Sandbox Code Playgroud)
给了我一个错误的结果 - 结果图像仍有3个频道.
您可以通过运行命令来检查:identify -format "%[colorspace] <== %f\n" *.png.
如何将cv :: Mat转换为灰度?
我试图从opencv运行drawKeyPoints func,但是我收到了Assertion Filed错误.我的猜测是它需要在参数中接收灰度图像而不是彩色图像.
void SurfDetector(cv::Mat img){
vector<cv::KeyPoint> keypoints;
cv::Mat featureImage;
cv::drawKeypoints(img, keypoints, featureImage, cv::Scalar(255,255,255) ,cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS);
cv::namedWindow("Picture");
cv::imshow("Picture", featureImage);
Run Code Online (Sandbox Code Playgroud)
}
我正在尝试创建一个类似于罪恶之城或其他电影的效果,除了图像中的所有颜色之外,它们都会删除所有颜色.
我有一个RGB图像,我想转换为灰度,但我想保持一种颜色.
这是我的照片:

我想保持红色.其余的应该是灰度的.
这是我的代码输出到目前为止(你可以看到区域是正确的,我不知道为什么它们是白色而不是红色):

到目前为止,这是我的代码:
filename = 'roses.jpg';
[cdata,map] = imread( filename );
% convert to RGB if it is indexed image
if ~isempty( map )
cdata = idx2rgb( cdata, map );
end
%imtool('roses.jpg');
imWidth = 685;
imHeight = 428;
% RGB ranges of a color we want to keep
redRange = [140 255];
greenRange = [0 40];
blueRange = [0 40];
% RGB values we don't want to convert to grayscale
redToKeep = zeros(imHeight, imWidth);
greenToKeep …Run Code Online (Sandbox Code Playgroud) 我在Ubuntu 12.04上使用Python(2.7)和OpenCV 2.4.6的绑定
我加载图像
image = cv2.imread('image.jpg')
Run Code Online (Sandbox Code Playgroud)
然后我检查图像阵列的形状
print image.shape
Run Code Online (Sandbox Code Playgroud)
我得到(480,640,3),我期望640x480彩色图像.然后我将图像转换为灰度并再次检查形状.
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
print gray_image.shape
Run Code Online (Sandbox Code Playgroud)
我得到(480,640,1),我期望640x480 灰度图像.然后我保存图像:
cv2.imwrite('gray.jpg', gray_image)
Run Code Online (Sandbox Code Playgroud)
我在linux上,所以我试着用gThumb查看图像,它显示了所有的颜色通道.当我将灰色图像带回OpenCV时,图像再次有三个通道.我知道这个标志用于阅读图像:
CV_LOAD_IMAGE_GRAYSCALE - If set, always convert image to the grayscale one
Run Code Online (Sandbox Code Playgroud)
但这听起来像是将图像作为彩色图像引入然后转换它.我正在将这个项目移植到RaspberryPi,所以我不希望发生不必要的操作.
编辑:我做了一些计时检查,我发现使用CV_LOAD_IMAGE_GRAYSCALE标志设置加载图像会导致图像加载速度提高两倍,而不管图像输入如何.
Using a 3072 x 4608 x 3 image
0.196774959564 seconds with default loading
0.0931899547577 seconds with CV_LOAD_IMAGE_GRAYSCALE
Run Code Online (Sandbox Code Playgroud)
问题似乎是OpenCV正在创建3通道JPG输出,无论我是否有灰度图像矩阵!
我可以用什么其他应用程序来确保我得到一个8位通道JPG图像?(也许gThumb错误地报告了频道).
如果图像不是单通道,为什么OpenCV会在磁盘写入时将我的灰度图像保存为3通道图像?
提前致谢.