接go语言网站开发,贵州建设职业学院官方网站,十大医疗器械公司排名,优书网打不开了1.认识图像#xff08;彩色图中每一个像素点都包含三个颜色通道RGB#xff0c;数值范围为0~255#xff0c;0代表黑色#xff0c;255代表白色#xff09; import cv2 #opencv 读取的格式为BGRimg cv2.imread(cat.png) #读取图像
cv2.imshow(cat, img) #显示图像img#x…1.认识图像彩色图中每一个像素点都包含三个颜色通道RGB数值范围为0~2550代表黑色255代表白色 import cv2 #opencv 读取的格式为BGRimg cv2.imread(cat.png) #读取图像
cv2.imshow(cat, img) #显示图像img窗口名为cat
cv2.waitKey(0) #显示并停留
print(img)
print(img.shape) # h*w*c (432, 650, 3)此时有三个通道
print(len(img)) #高
print(len(img[0])) #宽
print(len(img[0][0])) #RGB
程序一旦停止运行图片就不会展示了所以会出现一闪而过的窗口展示为了让图片长时间展示出来需要加cv2.waitKey(0)
print(img)输出三维列表最外维度是高中间维度是宽最里面的维度是RGB
[[[ 14 24 11][ 14 24 11][ 14 24 12]...[ 3 26 12][ 3 29 13][ 3 30 14]][[ 14 24 11][ 14 24 11][ 13 23 11]...[ 2 25 11][ 3 29 13][ 3 30 14]][[ 14 24 12][ 14 24 12][ 13 23 11]...[ 3 23 10][ 5 28 13][ 4 30 14]]...[[ 38 137 121][ 36 135 119][ 36 134 118]...[ 35 125 106][ 36 125 106][ 36 125 106]][[ 39 138 122][ 37 136 120][ 37 135 119]...[ 35 124 105][ 35 124 105][ 35 124 105]][[ 40 139 123][ 38 137 121][ 38 136 120]...[ 35 124 105][ 35 124 105][ 35 124 105]]]
print(len(img)) print(leg(img[0])) print(leg(img[0][0])) print(img.shape)
432
650
3
(432, 650, 3)
2.读取灰度图 彩色图到灰色图的转化公式B × 0.114 G × 0.587 R × 0.299
例14×0.11424×0.58711×0.29918.973向下取整 14×0.11424×0.58712×0.29919.272向下取整
import cv2 #opencv 读取的格式为BGR# 读取灰度图
img cv2.imread(cat.png, cv2.IMREAD_GRAYSCALE) #cv2.IMREAD_GRAYSCALE表示读取灰度图def cv_show(name,img): #定义一个函数参数为窗口名和待显示图像cv2.imshow(name, img)cv2.waitKey(0) #显示并停留
cv_show(cat,img) #封装起来只需传入窗口名和待显示图像
print(img.shape) # h*w (432, 650)此时只有一个通道#图像保存将图片img保存在当前目录名为cat2.png
cv2.imwrite(cat2.png, img)
print(img) print(img.shape)
[[ 18 18 19 ... 19 21 22][ 18 18 18 ... 18 21 22][ 19 19 18 ... 16 20 22]...[120 118 118 ... 109 109 109][121 119 119 ... 108 108 108][122 120 120 ... 108 108 108]]
(432, 650) 3.图像截取 img2 cv2.imread(cat.png) #读取图像
img3 img2[0:200, 0:300] #高200像素宽300像素def cv_show(name,img): #定义一个函数参数为窗口名和待显示图像cv2.imshow(name, img)cv2.waitKey(0) #显示并停留cv_show(cat,img3)
print(img3.shape) #(200, 300, 3)
3.1通道提取 img2 cv2.imread(cat.png) #读取图像#只保留R通道令B,G通道都为0其他同理
img2[:,:,0]0
img2[:,:,1]0def cv_show(name,img): #定义一个函数参数为窗口名和待显示图像cv2.imshow(name, img)cv2.waitKey(0) #显示并停留cv_show(cat,img2)4.图像融合
img2 cv2.imread(cat.png) #读取图像
img3 img2 10
print(img2[0:2,0:2,:]) #为了方便观察只打印前两行两列的数值
print(img3[0:2,0:2,:])
可以看出在每个像素点的每个通道上都10
[[[14 24 11][14 24 11]][[14 24 11][14 24 11]]]
[[[24 34 21][24 34 21]][[24 34 21][24 34 21]]]
如果大于255怎么办会自动溢出14250-256824250-25618...
img2 cv2.imread(cat.png) #读取图像
img3 img2 250
print(img2[0:2,0:2,:]) #为了方便观察只打印前两行两列的数值
print(img3[0:2,0:2,:])
[[[14 24 11][14 24 11]][[14 24 11][14 24 11]]]
[[[ 8 18 5][ 8 18 5]][[ 8 18 5][ 8 18 5]]]
5.腐蚀与膨胀
原图腐蚀膨胀开运算闭运算import cv2 #opencv 读取的格式为BGR
import numpy as npimg cv2.imread(j.png) #读取图像
kernel np.ones((5,5), np.uint8) #设置锚框核大小img2 cv2.erode(img, kernel) #erode为腐蚀操作
img2 cv2.dilate(img, kernel) #dilate为膨胀操作img2 cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel) #开运算
img2 cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel) #闭运算def cv_show(name,img): #定义一个函数参数为窗口名和待显示图像cv2.imshow(name, img)cv2.waitKey(0) #显示并停留
cv_show(j, img2)
腐蚀将锚框核区域中最小的值赋值给锚点即将(0,0,0)像素值赋值给锚点故腐蚀后黑色区域增加白色区域减少
膨胀将锚框核区域中最大的值赋值给锚点即将(255,255,255)像素值赋值给锚点故膨胀后白色区域增加黑色区域减少
开运算先腐蚀再膨胀闭运算先膨胀再腐蚀。
5.1梯度计算
膨胀-腐蚀梯度运算梯度计算 膨胀 - 腐蚀
import cv2 #opencv 读取的格式为BGR
import numpy as npimg cv2.imread(j.png) #读取图像kernel np.ones((5,5), np.uint8)# imgP cv2.erode(img, kernel) #膨胀
# imgF cv2.dilate(img, kernel) #腐蚀
# img2 imgF - imgP #膨胀-腐蚀img2 cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel) #梯度运算def cv_show(name,img): #定义一个函数参数为窗口名和待显示图像cv2.imshow(name, img)cv2.waitKey(0) #显示并停留
cv_show(j, img2) 6.Soble算子(边缘检测) Soble卷积因子dx方向dy方向dx,dy合并import cv2 #opencv 读取的格式为BGR
import numpy as npimg cv2.imread(j.png) #读取图像imgx cv2.Sobel(img, cv2.CV_64F, 1, 0, 3) #cv2.CV_64F为更高的数据类型dx1dy0ksize3
imgx cv2.convertScaleAbs(imgx) #将负值转化为绝对值imgy cv2.Sobel(img, cv2.CV_64F, 0, 1, 3) #cv2.CV_64F为更高的数据类型dx0dy1ksize3
imgy cv2.convertScaleAbs(imgy) #将负值转化为绝对值def cv_show(name,img): #定义一个函数参数为窗口名和待显示图像cv2.imshow(name, img)cv2.waitKey(0) #显示并停留
cv_show(j, imgx)
cv_show(j, imgy) #同时在x,y方向上Soble
imgx_y cv2.addWeighted(imgx, 0.5, imgy, 0.5, 0) #0.5为权重0为偏置
cv_show(j, imgx_y) Scharr算子(用法和Soble一样) scharr算子卷积因子dx方向dy方向dx,dy合并import cv2 #opencv 读取的格式为BGR
import numpy as npimg cv2.imread(j.png) #读取图像imgx cv2.Scharr(img, cv2.CV_64F, 1, 0, 3) #cv2.CV_64F为更高的数据类型dx1dy0ksize3
imgx cv2.convertScaleAbs(imgx) #将负值转化为绝对值imgy cv2.Scharr(img, cv2.CV_64F, 0, 1, 3) #cv2.CV_64F为更高的数据类型dx0dy1ksize3
imgy cv2.convertScaleAbs(imgy) #将负值转化为绝对值def cv_show(name,img): #定义一个函数参数为窗口名和待显示图像cv2.imshow(name, img)cv2.waitKey(0) #显示并停留
cv_show(j, imgx)
cv_show(j, imgy) #同时在x,y方向上Soble
imgx_y cv2.addWeighted(imgx, 0.5, imgy, 0.5, 0) #0.5为权重0为偏置
cv_show(j, imgx_y) Laplace算子 Laplace算子卷积因子Laplace算子边缘检测import cv2 #opencv 读取的格式为BGR
import numpy as npimg cv2.imread(j.png) #读取图像img2 cv2.Laplacian(img, cv2.CV_64F, 3) #不需要设置dx,dy
img2 cv2.convertScaleAbs(img2)def cv_show(name,img): #定义一个函数参数为窗口名和待显示图像cv2.imshow(name, img)cv2.waitKey(0) #显示并停留cv_show(j, img2)