栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python image处理 读取image 读取灰度图边缘

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python image处理 读取image 读取灰度图边缘

python提取彩色图像RGB三通道

OpenCV读取图像后,按照BGR方式排列图像矩阵
PIL(python image library)库读取图像后,按照RGB方式排列图像矩阵
RGB:red, green, blue
1个彩色图像,可以分解为3个灰度图像,3个灰度图像合起来是一个彩色图像

imgArray = np.array(image)   #将image转化为一个数组;# 效果:result.shape=[width,height,channels通道:rgb 0,1,2]
imgArray.shape
b = imgArray[:,:,0] #提取红色通道

将彩色image(3个)一个通道的像素矩阵的像素值导出,得到一个新的矩阵

OpenCV读取

cv2.imread()用于读取图片文件
imread函数有两个参数,参数1:是图片路径,参数2:表示读取图片的形式,有三种:
cv2.IMREAD_COLOR:加载彩色图片,这个是默认参数,可以直接写1。
cv2.IMREAD_GRAYSCALE:以灰度模式加载图片,0。
cv2.IMREAD_UNCHANGED:包括alpha(透明通道),-1。读取原图,原图是灰度图的话,读出来就是灰度,原图是彩色三通道的读出来就是三通道,原图是四通道的,读出来就是四通道的。

cv2.imread()读取图片后已多维数组的形式保存图片信息,前两维表示图片的像素坐标,最后一维表示图片的通道索引,具体图像的通道数由图片的格式来决定
(1500,700,4)

import cv2
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import os
from pathlib import P

#读取image
img_bgrm = cv2.imread(path+ '1.png', cv2.IMREAD_UNCHANGED)
plt.show()
img_bgrm.shape
img_bgrm
# Save the transparency channel alpha
# blue、green、red、alpha 4通道
b,g,r, alpha = cv2.split(img_bgrm)

#转成只有0,255的黑白图,黑是0(array),白是255(有图的区域)
alpha_mask = np.where(alpha==0,0,1)
##convert alpha to 0 and 255 only
alpha2 = np.array(alpha_mask*255, dtype = "uint8")

#画图
from PIL import Image
import numpy as np
import math

img=Image.fromarray(alpha2)
img
#canny(): 边缘检测
img1 = cv2.GaussianBlur(alpha2,(3,3),0)
edges = cv2.Canny(img1, threshold1=30, threshold2=100)

#画出检测出来的边图片
img=Image.fromarray(edges)
img
#保存image_edges
cv2.imwrite('1_new.png',edges)
插值

interp1d函数
'nearest’是最邻近插值(零阶), 'linear’线性插值; 'quadratic’平方插值(二元一次); 'cubic’立方插值(三元一次)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/330962.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号