cv2本地图形读取,由RGB变为灰度,再变为tensor

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cv2本地图形读取,由RGB变为灰度,再变为tensor相关的知识,希望对你有一定的参考价值。

参考技术A

最近想用pytorch识别本地的图片库,于是打算用一个最基础的网络,没有用到Conv

由cv2读取本地图形方式为:

第一行选取图形目录,cv2.IMREAD_GRAYSCALE为转为灰度
第二行为转为tensor形式,可以进入计算

基础的网络如下:

这里还需要一个y来表示样本的种类。

目前困惑

这里有个x,y的例子,但是x是每一行一个y对应,对于一个非向量的矩阵块,我还不明白怎么进行分类。

初步想法

如果有大佬看到希望能给予小白指导orz

matlab怎么将灰度图像转为rgb图像

一般彩色图像至少需要三个维度的信息,比如RGB、HSV、YIQ等等。每种颜色相当于一个三维向量,不同的表示法则相当于同一个向量在不同的坐标轴下(即不同的基下)的表示。而将其变为灰度后,只剩下一个维度,相当于将三维向量投影为一维标量一样,是不可能回复为原来的向量的。要想恢复,就必须储存另外两个维度的信息,合在一起还是三维向量,这还不如直接保存原来的彩色图像数据。如果你一定要将其分解为灰度基和另两个基下的表示,可以用YIQ表示,他的Y分量就和灰度数据等价,美国电视信号NTSC就是YIQ表示的,因此可以和黑白电视兼容(黑白电视只能接受Y信号,得到灰度图像)。

用命令rgb2ntsc和ntsc2rgb可以将数据在RGB和YIQ之间互换。下面是例子

clear;clc;
RGB = imread(\'peppers.png\');%RGB图像
YIQ = rgb2ntsc(RGB);%YIQ表示
GRAY=rgb2gray(RGB);%灰度图像,它和YIQ中的Y等价,只不过灰度图像的值是0~255的整数,而Y是0~1的实数,即GRAY=uint8(255*YIQ(:,:,1))
RGB_restore=ntsc2rgb(YIQ);%从YIQ表示恢复的RGB图像
subplot 221
imshow(RGB);title(\'原图像RGB\')
subplot 222
imshow(GRAY);title(\'灰度图GRAY\')
subplot 224
imshow(YIQ(:,:,1));title(\'转换为YIQ后的Y分量\',\'(和灰度图等价)\')
subplot 223
imshow(RGB_restore);title(\'从YIQ表示恢复的RGB图像\',\'(和原图像一致)\')

当然,这种分解是不唯一的,只要保证三个基互不相关即可。因此我们可以自己定义分解方法。比如,我们要将RGB表示转换为RGg表示,也就是用灰度分量g取代蓝色分量B,红色分量R和绿色分量G不变。我们可以从RGg计算出蓝色分量B,因为灰度g=p*R+q*G+t*B(其中p=0.2989,q=0.5870,t=0.1140),于是B=(g-p*R-q*G)/t。于是我们只要保留R和G两个颜色分量,再加上灰度图g,就可以回复原来的RGB图像。下面是例子

clear;clc;
RGB = imread(\'peppers.png\');%RGB图像
g=rgb2gray(RGB);%灰度图g
R=double(RGB(:,:,1));%红色分量R
G=double(RGB(:,:,2));%绿色分量G,于是RGg就是一种我们自己定义的颜色表示方法了
p=0.2989;q=0.5870;t=0.1140;
B=(double(g)-p*R-q*G)/t;%通过RGg计算得到的蓝色分量B,他和原图像中的蓝色分量是一致的
subplot 131
imshow(RGB);title(\'原图像RGB\')
subplot 132
imshow(g);title(\'灰度图g\')
subplot 133
imshow(uint8(cat(3,R,G,B)));title(\'从RGg表示恢复的RGB图像\',\'(和原图像一致)\')
参考技术A 按一下操作:A=double(m)G=mat2gray(A);figure(1);imshow(G)imwrite(G,'kkk.BMP')注意:m是灰度值矩阵.本回答被提问者采纳

以上是关于cv2本地图形读取,由RGB变为灰度,再变为tensor的主要内容,如果未能解决你的问题,请参考以下文章

如何用matlab减小图像的灰度级别

从MongoDB里面取得json格式的数据,然后存为本地的json文件,然后再从json读取变为dict

MATLAB图像拼接问题

python将图像进行缩放的demo

matlab 灰度图像矩阵的大小问题(入门级)

寻找图片中数字的轮廓并裁剪 扣取数字