赞
踩
记录笔者学习Python-opencv第十三课:图像像素值统计,代码资料来源于网络贾老师视频。
代码如下:
import cv2 as cv
import numpy as np
代码如下:
def pixel_stat_demo():
b1= cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255
print(b1.shape) #打印维度
cv.imshow("input",b1)
means,dev=cv.meanStdDev(b1)#均值与方差
print(means,"dev:",dev)
cv.waitKey(0) # 设置关闭窗口
cv.destroyAllWindows()
代码如下:
import cv2 as cv import numpy as np def read_demo_(): image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255 cv.imshow("input", image) cv.waitKey(0) cv.destroyAllWindows() def color_space_demo_(): image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255 gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)#将bgr转换为gray hsv = cv.cvtColor(image, cv.COLOR_BGR2HSV)#将bgr转换为hsv thsv=cv.cvtColor(image,cv.COLOR_HSV2BGR)#将HSV转换为BGR # cv.namedwindow("input",cv.WINDOW.AUTOSIZE) cv.imshow("gray", gray)#显示一个窗口名为gray的gray图像 cv.imshow("hsv", hsv)#显示一个窗口名为hsv的hsv图像 cv.imshow("thsv", thsv) # 显示一个窗口名为thsv的thsv图像 cv.waitKey(0)#相当于按键操作,当键盘触发时候,显示图片窗口关闭,否则不关闭 cv.destroyAllWindows() def mat_demo_(): image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255 h,w,c=image.shape #打印图像的维度 H高度 W宽度 C通道数,色彩图片有三通道,灰色图片零通道 roi = image[100:200, 100:200, :] # 感兴趣局部区域像素分布 H高度100-200像素,W宽度100-200像素。灰度图像就没有最后一个冒号 blank=np.zeros((h,w,c),dtype=np.uint8)#产生一个空白窗口,需要说明H,W,C以及字节数,这是区别于np.zeros_like()函数。 #blank[60:200, 60:280, :] = image[60:200, 60:280, :] # blank和image要一致才能匹配 #blank = np.copy(image)#使用copy函数直接进行复制,将blank上述注释掉 blank=image#实现原图到blank的复制 cv.imshow("image", image)#显示原图窗口 cv.imshow("blank", blank)#显示blank空白窗口 cv.waitKey(0)#相当于按键操作,当键盘触发时候,显示图片窗口关闭,否则不关闭 cv.destroyAllWindows() def pixel_demo(): image=cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") #BGR 0-255 cv.imshow("input", image) h, w, c = image.shape#打印图像维度 for row in range(h):#行 for col in range(w):#列 b,g,r=image[row,col]#图像写像素 image[row,col]=(0,g,r)#取反操作,可对其进行更改 cv.imshow("result", image)#显示取反后的图片 cv.imwrite("C:/Users/akaak/Pictures/OpenCV/csdn/4/savedexample.png", image)#保存数据图 cv.waitKey(0)#设置关闭窗口 cv.destroyAllWindows() def math_demo(): image=cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") #BGR 0-255 cv.imshow("input", image) h, w, c = image.shape#打印图像维度 blank=np.zeros_like(image)#创建一个和image同尺寸的blank空白窗口 blank[:,:]=(2,2,2)#让blank空白窗口上面的像素都是50x50 cv.imshow("blank", blank)#显示一个blank空白窗口,窗口上面的像素都是50x50 #result=cv.add(image,blank)#进行加减时候,两幅图像大小必须一致,数据类型可以不用一致(增加亮度变亮) #result = cv.subtract(image, blank) # 进行加减时候,两幅图像大小必须一致,数据类型可以不用一致(减少亮度变黑) result = cv.divide(image, blank)#改变对比度,对比度降低 #result = cv.multiply(image, blank)#改变对比度,对比度提高 cv.imshow("result", result)#显示取反后的图片 #cv.imwrite("C:/Users/akaak/Pictures/OpenCV/csdn/4/savedexample.png", image)#保存数据图 cv.waitKey(0)#设置关闭窗口 cv.destroyAllWindows() def nothing(x): print(x) def adjust_light_demo(): image=cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") #BGR 0-255 cv.namedWindow("input",cv.WINDOW_AUTOSIZE)#创建一个自动大小的窗口 cv.createTrackbar("lightness","input",0,100,nothing)#创建一个名为lightness的trackbar,窗口与创建窗口一致。0-100,无回调 cv.imshow("input", image) blank=np.zeros_like(image)#创建一个和image同尺寸的blank空白窗口 while True: pos=cv.getTrackbarPos("lightness","input")#拖动第几个TrackBar,TrackBar在哪个窗口。 blank[:,:]=(pos,pos,pos)#让blank空白窗口上面的像素都是50x50 #cv.imshow("blank", blank)#显示一个blank空白窗口,窗口上面的像素都是50x50 result=cv.add(image,blank) cv.imshow("result", result)#显示取反后的图片 #cv.imwrite("C:/Users/akaak/Pictures/OpenCV/csdn/4/savedexample.png", image)#保存数据图 c=cv.waitKey(1)#设置关闭窗口 if c == 27:#Esc break cv.destroyAllWindows() def adjust_contrast_demo(): image=cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") #BGR 0-255 cv.namedWindow("input",cv.WINDOW_AUTOSIZE)#创建一个自动大小的窗口 cv.createTrackbar("lightness","input",0,100,nothing)#创建一个名为lightness的trackbar,窗口与创建窗口一致。0-100,无回调 cv.createTrackbar("contrast", "input", 100, 200, nothing) # 创建一个名为contrast的trackbar,窗口与创建窗口一致。100-200,无回调 cv.imshow("input", image) blank=np.zeros_like(image)#创建一个和image同尺寸的blank空白窗口 while True: #pos=cv.getTrackbarPos("lightness","input")#拖动第几个TrackBar,TrackBar在哪个窗口。 light = cv.getTrackbarPos("lightness", "input") # 拖动第几个TrackBar,TrackBar在哪个窗口。亮度 contrast = cv.getTrackbarPos("contrast", "input") /100 # 拖动第几个TrackBar,TrackBar在哪个窗口。对比度 print("light:",light,"contrast:",contrast)#打印输出实时light和contrast #blank[:,:]=(light,light,light)#让blank空白窗口上面的像素都是50x50 #cv.imshow("blank", blank)#显示一个blank空白窗口,窗口上面的像素都是50x50 result=cv.addWeighted(image,contrast,blank,0.5,light)#对比度和亮度调整函数 cv.imshow("result", result)#显示取反后的图片 #cv.imwrite("C:/Users/akaak/Pictures/OpenCV/csdn/4/savedexample.png", image)#保存数据图 c=cv.waitKey(1)#设置关闭窗口 if c == 27:#Esc break cv.destroyAllWindows() def keys_demo(): image=cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") #BGR 0-255 cv.namedWindow("input",cv.WINDOW_AUTOSIZE)#创建一个自动大小的窗口 cv.imshow("input", image) while True: c=cv.waitKey(1) # 设置关闭窗口 gray=image if c == 49:# 1控制gray窗口 gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY) cv.imshow("result", gray)#显示灰度图片 if c == 50: # 2控制hsv窗口 hsv=cv.cvtColor(image, cv.COLOR_BGR2HSV) cv.imshow("result", hsv) # 显示灰度图片 if c == 51: # 3控制图像几何操作 invert=cv.bitwise_not(image) cv.imshow("result", invert) # 显示图片几何操作 if c == 27:#Esc关闭所有窗口 break cv.destroyAllWindows() def color_table_demo(): colormap = [ cv.COLORMAP_AUTUMN, cv.COLORMAP_BONE, cv.COLORMAP_JET, cv.COLORMAP_WINTER, cv.COLORMAP_RAINBOW, cv.COLORMAP_OCEAN, cv.COLORMAP_SUMMER, cv.COLORMAP_SPRING, cv.COLORMAP_COOL, cv.COLORMAP_PINK, cv.COLORMAP_HOT, cv.COLORMAP_PARULA, cv.COLORMAP_MAGMA, cv.COLORMAP_INFERNO, cv.COLORMAP_PLASMA, cv.COLORMAP_VIRIDIS, cv.COLORMAP_CIVIDIS, cv.COLORMAP_TWILIGHT, cv.COLORMAP_TWILIGHT_SHIFTED ]#自带颜色表操作代码19个 image=cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") #BGR 0-255 cv.namedWindow("input",cv.WINDOW_AUTOSIZE)#创建一个自动大小的窗口 cv.imshow("input", image) index=0 while True: dst=cv.applyColorMap(image,colormap[index]%19)#循环19颜色 index+=1 cv.imshow("color style",dst) c=cv.waitKey(1000) # 设置关闭窗口 if c == 27:#Esc关闭所有窗口 break cv.destroyAllWindows() def bitwise_demo(): b1=np.zeros((400,400,3),dtype=np.uint8)#创建一个彩色图片 b1[:,:]=(255,0,255)#赋值 b2 = np.zeros((400, 400, 3), dtype=np.uint8) # 创建一个彩色图片 b2[:,:]=(0, 255, 0) #赋值 cv.imshow("b1", b1) cv.imshow("b2", b2) dst1=cv.bitwise_and(b1,b2) #与 dst2 = cv.bitwise_or(b1, b2) #或 cv.imshow("bitwise_and", dst1) cv.imshow("bitwise_or", dst2) cv.waitKey(0) # 设置关闭窗口 cv.destroyAllWindows() def channel_split_demo(): b1= cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255 print(b1.shape)#打印维度 cv.imshow("input",b1) cv.imshow("b1", b1[:,:,2]) mv=cv.split(b1)#图像分离 print(len(mv)) mv[0][:,:]=255# result=cv.merge(mv)#图像合并 dst=np.zeros(b1.shape,dtype=np.uint8) cv.mixChannels([b1],[dst],fromTo=[2,0,1,1,0,2])#通道混合 cv.imshow("output4", dst) cv.imshow("result",result) cv.waitKey(0) # 设置关闭窗口 cv.destroyAllWindows() def colorspace_demo(): b1= cv.imread("C:/Users/akaak/Pictures/OpenCV/csdn/12/greenback.jpg") # BGR 0-255 print(b1.shape) #打印维度 cv.imshow("input",b1) hsv=cv.cvtColor(b1,cv.COLOR_BGR2HSV)#BGR转换为HSV cv.imshow("hsv",hsv) mask=cv.inRange(hsv,(35,43,46),(77,255,255))#根据像素范围进行过滤,把符合像素范围的保留,赋成0黑色和1白色(其实就是将绿色背景变成白色背景) cv.imshow("mask", mask) cv.bitwise_not(mask,mask)#取反操作 result=cv.bitwise_and(b1,b1,mask=mask)#原图与mask区域相与(mask大于0的区域) cv.imshow("result", result) cv.waitKey(0) # 设置关闭窗口 cv.destroyAllWindows() def pixel_stat_demo(): b1= cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255 print(b1.shape) #打印维度 cv.imshow("input",b1) means,dev=cv.meanStdDev(b1)#均值与方差 print(means,"dev:",dev) cv.waitKey(0) # 设置关闭窗口 cv.destroyAllWindows() if __name__ == "__main__": pixel_stat_demo()
原始图片有用信息代码如下:
import cv2 as cv import numpy as np def read_demo_(): image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255 cv.imshow("input", image) cv.waitKey(0) cv.destroyAllWindows() def color_space_demo_(): image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255 gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)#将bgr转换为gray hsv = cv.cvtColor(image, cv.COLOR_BGR2HSV)#将bgr转换为hsv thsv=cv.cvtColor(image,cv.COLOR_HSV2BGR)#将HSV转换为BGR # cv.namedwindow("input",cv.WINDOW.AUTOSIZE) cv.imshow("gray", gray)#显示一个窗口名为gray的gray图像 cv.imshow("hsv", hsv)#显示一个窗口名为hsv的hsv图像 cv.imshow("thsv", thsv) # 显示一个窗口名为thsv的thsv图像 cv.waitKey(0)#相当于按键操作,当键盘触发时候,显示图片窗口关闭,否则不关闭 cv.destroyAllWindows() def mat_demo_(): image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255 h,w,c=image.shape #打印图像的维度 H高度 W宽度 C通道数,色彩图片有三通道,灰色图片零通道 roi = image[100:200, 100:200, :] # 感兴趣局部区域像素分布 H高度100-200像素,W宽度100-200像素。灰度图像就没有最后一个冒号 blank=np.zeros((h,w,c),dtype=np.uint8)#产生一个空白窗口,需要说明H,W,C以及字节数,这是区别于np.zeros_like()函数。 #blank[60:200, 60:280, :] = image[60:200, 60:280, :] # blank和image要一致才能匹配 #blank = np.copy(image)#使用copy函数直接进行复制,将blank上述注释掉 blank=image#实现原图到blank的复制 cv.imshow("image", image)#显示原图窗口 cv.imshow("blank", blank)#显示blank空白窗口 cv.waitKey(0)#相当于按键操作,当键盘触发时候,显示图片窗口关闭,否则不关闭 cv.destroyAllWindows() def pixel_demo(): image=cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") #BGR 0-255 cv.imshow("input", image) h, w, c = image.shape#打印图像维度 for row in range(h):#行 for col in range(w):#列 b,g,r=image[row,col]#图像写像素 image[row,col]=(0,g,r)#取反操作,可对其进行更改 cv.imshow("result", image)#显示取反后的图片 cv.imwrite("C:/Users/akaak/Pictures/OpenCV/csdn/4/savedexample.png", image)#保存数据图 cv.waitKey(0)#设置关闭窗口 cv.destroyAllWindows() def math_demo(): image=cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") #BGR 0-255 cv.imshow("input", image) h, w, c = image.shape#打印图像维度 blank=np.zeros_like(image)#创建一个和image同尺寸的blank空白窗口 blank[:,:]=(2,2,2)#让blank空白窗口上面的像素都是50x50 cv.imshow("blank", blank)#显示一个blank空白窗口,窗口上面的像素都是50x50 #result=cv.add(image,blank)#进行加减时候,两幅图像大小必须一致,数据类型可以不用一致(增加亮度变亮) #result = cv.subtract(image, blank) # 进行加减时候,两幅图像大小必须一致,数据类型可以不用一致(减少亮度变黑) result = cv.divide(image, blank)#改变对比度,对比度降低 #result = cv.multiply(image, blank)#改变对比度,对比度提高 cv.imshow("result", result)#显示取反后的图片 #cv.imwrite("C:/Users/akaak/Pictures/OpenCV/csdn/4/savedexample.png", image)#保存数据图 cv.waitKey(0)#设置关闭窗口 cv.destroyAllWindows() def nothing(x): print(x) def adjust_light_demo(): image=cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") #BGR 0-255 cv.namedWindow("input",cv.WINDOW_AUTOSIZE)#创建一个自动大小的窗口 cv.createTrackbar("lightness","input",0,100,nothing)#创建一个名为lightness的trackbar,窗口与创建窗口一致。0-100,无回调 cv.imshow("input", image) blank=np.zeros_like(image)#创建一个和image同尺寸的blank空白窗口 while True: pos=cv.getTrackbarPos("lightness","input")#拖动第几个TrackBar,TrackBar在哪个窗口。 blank[:,:]=(pos,pos,pos)#让blank空白窗口上面的像素都是50x50 #cv.imshow("blank", blank)#显示一个blank空白窗口,窗口上面的像素都是50x50 result=cv.add(image,blank) cv.imshow("result", result)#显示取反后的图片 #cv.imwrite("C:/Users/akaak/Pictures/OpenCV/csdn/4/savedexample.png", image)#保存数据图 c=cv.waitKey(1)#设置关闭窗口 if c == 27:#Esc break cv.destroyAllWindows() def adjust_contrast_demo(): image=cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") #BGR 0-255 cv.namedWindow("input",cv.WINDOW_AUTOSIZE)#创建一个自动大小的窗口 cv.createTrackbar("lightness","input",0,100,nothing)#创建一个名为lightness的trackbar,窗口与创建窗口一致。0-100,无回调 cv.createTrackbar("contrast", "input", 100, 200, nothing) # 创建一个名为contrast的trackbar,窗口与创建窗口一致。100-200,无回调 cv.imshow("input", image) blank=np.zeros_like(image)#创建一个和image同尺寸的blank空白窗口 while True: #pos=cv.getTrackbarPos("lightness","input")#拖动第几个TrackBar,TrackBar在哪个窗口。 light = cv.getTrackbarPos("lightness", "input") # 拖动第几个TrackBar,TrackBar在哪个窗口。亮度 contrast = cv.getTrackbarPos("contrast", "input") /100 # 拖动第几个TrackBar,TrackBar在哪个窗口。对比度 print("light:",light,"contrast:",contrast)#打印输出实时light和contrast #blank[:,:]=(light,light,light)#让blank空白窗口上面的像素都是50x50 #cv.imshow("blank", blank)#显示一个blank空白窗口,窗口上面的像素都是50x50 result=cv.addWeighted(image,contrast,blank,0.5,light)#对比度和亮度调整函数 cv.imshow("result", result)#显示取反后的图片 #cv.imwrite("C:/Users/akaak/Pictures/OpenCV/csdn/4/savedexample.png", image)#保存数据图 c=cv.waitKey(1)#设置关闭窗口 if c == 27:#Esc break cv.destroyAllWindows() def keys_demo(): image=cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") #BGR 0-255 cv.namedWindow("input",cv.WINDOW_AUTOSIZE)#创建一个自动大小的窗口 cv.imshow("input", image) while True: c=cv.waitKey(1) # 设置关闭窗口 gray=image if c == 49:# 1控制gray窗口 gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY) cv.imshow("result", gray)#显示灰度图片 if c == 50: # 2控制hsv窗口 hsv=cv.cvtColor(image, cv.COLOR_BGR2HSV) cv.imshow("result", hsv) # 显示灰度图片 if c == 51: # 3控制图像几何操作 invert=cv.bitwise_not(image) cv.imshow("result", invert) # 显示图片几何操作 if c == 27:#Esc关闭所有窗口 break cv.destroyAllWindows() def color_table_demo(): colormap = [ cv.COLORMAP_AUTUMN, cv.COLORMAP_BONE, cv.COLORMAP_JET, cv.COLORMAP_WINTER, cv.COLORMAP_RAINBOW, cv.COLORMAP_OCEAN, cv.COLORMAP_SUMMER, cv.COLORMAP_SPRING, cv.COLORMAP_COOL, cv.COLORMAP_PINK, cv.COLORMAP_HOT, cv.COLORMAP_PARULA, cv.COLORMAP_MAGMA, cv.COLORMAP_INFERNO, cv.COLORMAP_PLASMA, cv.COLORMAP_VIRIDIS, cv.COLORMAP_CIVIDIS, cv.COLORMAP_TWILIGHT, cv.COLORMAP_TWILIGHT_SHIFTED ]#自带颜色表操作代码19个 image=cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") #BGR 0-255 cv.namedWindow("input",cv.WINDOW_AUTOSIZE)#创建一个自动大小的窗口 cv.imshow("input", image) index=0 while True: dst=cv.applyColorMap(image,colormap[index]%19)#循环19颜色 index+=1 cv.imshow("color style",dst) c=cv.waitKey(1000) # 设置关闭窗口 if c == 27:#Esc关闭所有窗口 break cv.destroyAllWindows() def bitwise_demo(): b1=np.zeros((400,400,3),dtype=np.uint8)#创建一个彩色图片 b1[:,:]=(255,0,255)#赋值 b2 = np.zeros((400, 400, 3), dtype=np.uint8) # 创建一个彩色图片 b2[:,:]=(0, 255, 0) #赋值 cv.imshow("b1", b1) cv.imshow("b2", b2) dst1=cv.bitwise_and(b1,b2) #与 dst2 = cv.bitwise_or(b1, b2) #或 cv.imshow("bitwise_and", dst1) cv.imshow("bitwise_or", dst2) cv.waitKey(0) # 设置关闭窗口 cv.destroyAllWindows() def channel_split_demo(): b1= cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255 print(b1.shape)#打印维度 cv.imshow("input",b1) cv.imshow("b1", b1[:,:,2]) mv=cv.split(b1)#图像分离 print(len(mv)) mv[0][:,:]=255# result=cv.merge(mv)#图像合并 dst=np.zeros(b1.shape,dtype=np.uint8) cv.mixChannels([b1],[dst],fromTo=[2,0,1,1,0,2])#通道混合 cv.imshow("output4", dst) cv.imshow("result",result) cv.waitKey(0) # 设置关闭窗口 cv.destroyAllWindows() def colorspace_demo(): b1= cv.imread("C:/Users/akaak/Pictures/OpenCV/csdn/12/greenback.jpg") # BGR 0-255 print(b1.shape) #打印维度 cv.imshow("input",b1) hsv=cv.cvtColor(b1,cv.COLOR_BGR2HSV)#BGR转换为HSV cv.imshow("hsv",hsv) mask=cv.inRange(hsv,(35,43,46),(77,255,255))#根据像素范围进行过滤,把符合像素范围的保留,赋成0黑色和1白色(其实就是将绿色背景变成白色背景) cv.imshow("mask", mask) cv.bitwise_not(mask,mask)#取反操作 result=cv.bitwise_and(b1,b1,mask=mask)#原图与mask区域相与(mask大于0的区域) cv.imshow("result", result) cv.waitKey(0) # 设置关闭窗口 cv.destroyAllWindows() def pixel_stat_demo(): b1=np.zeros((400,400,3),dtype=np.uint8) #cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255 print(b1.shape) #打印维度 b1[:, :] = (255, 0, 255) # 赋像素值(像素信息) cv.imshow("input",b1) means,dev=cv.meanStdDev(b1)#均值与方差 print(means,"dev:",dev) cv.waitKey(0) # 设置关闭窗口 cv.destroyAllWindows() if __name__ == "__main__": pixel_stat_demo()
原始图片最大值和最小值代码如下:
import cv2 as cv import numpy as np def read_demo_(): image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255 cv.imshow("input", image) cv.waitKey(0) cv.destroyAllWindows() def color_space_demo_(): image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255 gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)#将bgr转换为gray hsv = cv.cvtColor(image, cv.COLOR_BGR2HSV)#将bgr转换为hsv thsv=cv.cvtColor(image,cv.COLOR_HSV2BGR)#将HSV转换为BGR # cv.namedwindow("input",cv.WINDOW.AUTOSIZE) cv.imshow("gray", gray)#显示一个窗口名为gray的gray图像 cv.imshow("hsv", hsv)#显示一个窗口名为hsv的hsv图像 cv.imshow("thsv", thsv) # 显示一个窗口名为thsv的thsv图像 cv.waitKey(0)#相当于按键操作,当键盘触发时候,显示图片窗口关闭,否则不关闭 cv.destroyAllWindows() def mat_demo_(): image = cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255 h,w,c=image.shape #打印图像的维度 H高度 W宽度 C通道数,色彩图片有三通道,灰色图片零通道 roi = image[100:200, 100:200, :] # 感兴趣局部区域像素分布 H高度100-200像素,W宽度100-200像素。灰度图像就没有最后一个冒号 blank=np.zeros((h,w,c),dtype=np.uint8)#产生一个空白窗口,需要说明H,W,C以及字节数,这是区别于np.zeros_like()函数。 #blank[60:200, 60:280, :] = image[60:200, 60:280, :] # blank和image要一致才能匹配 #blank = np.copy(image)#使用copy函数直接进行复制,将blank上述注释掉 blank=image#实现原图到blank的复制 cv.imshow("image", image)#显示原图窗口 cv.imshow("blank", blank)#显示blank空白窗口 cv.waitKey(0)#相当于按键操作,当键盘触发时候,显示图片窗口关闭,否则不关闭 cv.destroyAllWindows() def pixel_demo(): image=cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") #BGR 0-255 cv.imshow("input", image) h, w, c = image.shape#打印图像维度 for row in range(h):#行 for col in range(w):#列 b,g,r=image[row,col]#图像写像素 image[row,col]=(0,g,r)#取反操作,可对其进行更改 cv.imshow("result", image)#显示取反后的图片 cv.imwrite("C:/Users/akaak/Pictures/OpenCV/csdn/4/savedexample.png", image)#保存数据图 cv.waitKey(0)#设置关闭窗口 cv.destroyAllWindows() def math_demo(): image=cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") #BGR 0-255 cv.imshow("input", image) h, w, c = image.shape#打印图像维度 blank=np.zeros_like(image)#创建一个和image同尺寸的blank空白窗口 blank[:,:]=(2,2,2)#让blank空白窗口上面的像素都是50x50 cv.imshow("blank", blank)#显示一个blank空白窗口,窗口上面的像素都是50x50 #result=cv.add(image,blank)#进行加减时候,两幅图像大小必须一致,数据类型可以不用一致(增加亮度变亮) #result = cv.subtract(image, blank) # 进行加减时候,两幅图像大小必须一致,数据类型可以不用一致(减少亮度变黑) result = cv.divide(image, blank)#改变对比度,对比度降低 #result = cv.multiply(image, blank)#改变对比度,对比度提高 cv.imshow("result", result)#显示取反后的图片 #cv.imwrite("C:/Users/akaak/Pictures/OpenCV/csdn/4/savedexample.png", image)#保存数据图 cv.waitKey(0)#设置关闭窗口 cv.destroyAllWindows() def nothing(x): print(x) def adjust_light_demo(): image=cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") #BGR 0-255 cv.namedWindow("input",cv.WINDOW_AUTOSIZE)#创建一个自动大小的窗口 cv.createTrackbar("lightness","input",0,100,nothing)#创建一个名为lightness的trackbar,窗口与创建窗口一致。0-100,无回调 cv.imshow("input", image) blank=np.zeros_like(image)#创建一个和image同尺寸的blank空白窗口 while True: pos=cv.getTrackbarPos("lightness","input")#拖动第几个TrackBar,TrackBar在哪个窗口。 blank[:,:]=(pos,pos,pos)#让blank空白窗口上面的像素都是50x50 #cv.imshow("blank", blank)#显示一个blank空白窗口,窗口上面的像素都是50x50 result=cv.add(image,blank) cv.imshow("result", result)#显示取反后的图片 #cv.imwrite("C:/Users/akaak/Pictures/OpenCV/csdn/4/savedexample.png", image)#保存数据图 c=cv.waitKey(1)#设置关闭窗口 if c == 27:#Esc break cv.destroyAllWindows() def adjust_contrast_demo(): image=cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") #BGR 0-255 cv.namedWindow("input",cv.WINDOW_AUTOSIZE)#创建一个自动大小的窗口 cv.createTrackbar("lightness","input",0,100,nothing)#创建一个名为lightness的trackbar,窗口与创建窗口一致。0-100,无回调 cv.createTrackbar("contrast", "input", 100, 200, nothing) # 创建一个名为contrast的trackbar,窗口与创建窗口一致。100-200,无回调 cv.imshow("input", image) blank=np.zeros_like(image)#创建一个和image同尺寸的blank空白窗口 while True: #pos=cv.getTrackbarPos("lightness","input")#拖动第几个TrackBar,TrackBar在哪个窗口。 light = cv.getTrackbarPos("lightness", "input") # 拖动第几个TrackBar,TrackBar在哪个窗口。亮度 contrast = cv.getTrackbarPos("contrast", "input") /100 # 拖动第几个TrackBar,TrackBar在哪个窗口。对比度 print("light:",light,"contrast:",contrast)#打印输出实时light和contrast #blank[:,:]=(light,light,light)#让blank空白窗口上面的像素都是50x50 #cv.imshow("blank", blank)#显示一个blank空白窗口,窗口上面的像素都是50x50 result=cv.addWeighted(image,contrast,blank,0.5,light)#对比度和亮度调整函数 cv.imshow("result", result)#显示取反后的图片 #cv.imwrite("C:/Users/akaak/Pictures/OpenCV/csdn/4/savedexample.png", image)#保存数据图 c=cv.waitKey(1)#设置关闭窗口 if c == 27:#Esc break cv.destroyAllWindows() def keys_demo(): image=cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") #BGR 0-255 cv.namedWindow("input",cv.WINDOW_AUTOSIZE)#创建一个自动大小的窗口 cv.imshow("input", image) while True: c=cv.waitKey(1) # 设置关闭窗口 gray=image if c == 49:# 1控制gray窗口 gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY) cv.imshow("result", gray)#显示灰度图片 if c == 50: # 2控制hsv窗口 hsv=cv.cvtColor(image, cv.COLOR_BGR2HSV) cv.imshow("result", hsv) # 显示灰度图片 if c == 51: # 3控制图像几何操作 invert=cv.bitwise_not(image) cv.imshow("result", invert) # 显示图片几何操作 if c == 27:#Esc关闭所有窗口 break cv.destroyAllWindows() def color_table_demo(): colormap = [ cv.COLORMAP_AUTUMN, cv.COLORMAP_BONE, cv.COLORMAP_JET, cv.COLORMAP_WINTER, cv.COLORMAP_RAINBOW, cv.COLORMAP_OCEAN, cv.COLORMAP_SUMMER, cv.COLORMAP_SPRING, cv.COLORMAP_COOL, cv.COLORMAP_PINK, cv.COLORMAP_HOT, cv.COLORMAP_PARULA, cv.COLORMAP_MAGMA, cv.COLORMAP_INFERNO, cv.COLORMAP_PLASMA, cv.COLORMAP_VIRIDIS, cv.COLORMAP_CIVIDIS, cv.COLORMAP_TWILIGHT, cv.COLORMAP_TWILIGHT_SHIFTED ]#自带颜色表操作代码19个 image=cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") #BGR 0-255 cv.namedWindow("input",cv.WINDOW_AUTOSIZE)#创建一个自动大小的窗口 cv.imshow("input", image) index=0 while True: dst=cv.applyColorMap(image,colormap[index]%19)#循环19颜色 index+=1 cv.imshow("color style",dst) c=cv.waitKey(1000) # 设置关闭窗口 if c == 27:#Esc关闭所有窗口 break cv.destroyAllWindows() def bitwise_demo(): b1=np.zeros((400,400,3),dtype=np.uint8)#创建一个彩色图片 b1[:,:]=(255,0,255)#赋值 b2 = np.zeros((400, 400, 3), dtype=np.uint8) # 创建一个彩色图片 b2[:,:]=(0, 255, 0) #赋值 cv.imshow("b1", b1) cv.imshow("b2", b2) dst1=cv.bitwise_and(b1,b2) #与 dst2 = cv.bitwise_or(b1, b2) #或 cv.imshow("bitwise_and", dst1) cv.imshow("bitwise_or", dst2) cv.waitKey(0) # 设置关闭窗口 cv.destroyAllWindows() def channel_split_demo(): b1= cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255 print(b1.shape)#打印维度 cv.imshow("input",b1) cv.imshow("b1", b1[:,:,2]) mv=cv.split(b1)#图像分离 print(len(mv)) mv[0][:,:]=255# result=cv.merge(mv)#图像合并 dst=np.zeros(b1.shape,dtype=np.uint8) cv.mixChannels([b1],[dst],fromTo=[2,0,1,1,0,2])#通道混合 cv.imshow("output4", dst) cv.imshow("result",result) cv.waitKey(0) # 设置关闭窗口 cv.destroyAllWindows() def colorspace_demo(): b1= cv.imread("C:/Users/akaak/Pictures/OpenCV/csdn/12/greenback.jpg") # BGR 0-255 print(b1.shape) #打印维度 cv.imshow("input",b1) hsv=cv.cvtColor(b1,cv.COLOR_BGR2HSV)#BGR转换为HSV cv.imshow("hsv",hsv) mask=cv.inRange(hsv,(35,43,46),(77,255,255))#根据像素范围进行过滤,把符合像素范围的保留,赋成0黑色和1白色(其实就是将绿色背景变成白色背景) cv.imshow("mask", mask) cv.bitwise_not(mask,mask)#取反操作 result=cv.bitwise_and(b1,b1,mask=mask)#原图与mask区域相与(mask大于0的区域) cv.imshow("result", result) cv.waitKey(0) # 设置关闭窗口 cv.destroyAllWindows() def pixel_stat_demo(): b1=cv.imread("C:/Users/akaak/Pictures/OpenCV/1.png") # BGR 0-255 print(b1.shape) #打印维度q cv.imshow("input",b1) print(np.max(b1[:,:,2])) means,dev=cv.meanStdDev(b1)#均值与方差 print(means,"dev:",dev) cv.waitKey(0) # 设置关闭窗口 cv.destroyAllWindows() if __name__ == "__main__": pixel_stat_demo()
本文介绍了笔者学习Python-opencv第十三课:图像像素值统计,学习了cv.meanStdDev函数和np.max和np.min函数,实现了对图像均值,方差,最大值与最小值的计算(代码资料来源于网络贾老师视频)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。