赞
踩
import cv2 import numpy as np def ImageHist(image, type):#进行直方图的统计 color = (255, 255, 255) windowName = 'Gray' if type == 31: color = (255, 0, 0) windowName = 'B Hist' elif type == 32: color = (0, 255, 0) windowName = 'G Hist' elif type == 33: color = (0, 0, 255) windowName = 'R Hist' # 完成直方图的统计 # 参数: 1、图片数据; 2、直方图的通道,[0]为灰度; 3、蒙板; 4、分成多少分,256组灰度值;5、直方图中各个像素的值[0.0,255.0] hist = cv2.calcHist([image], [0], None, [256], [0.0, 255.0]) #定义一个最小值,最大值,最小值的下标,最大值的下标 minV, maxV, minL, maxL = cv2.minMaxLoc(hist) histImg = np.zeros([256, 256, 3], np.uint8) for h in range(256): intenNormal = int(hist[h]*256 / maxV) cv2.line(histImg, (h, 256), (h, 256-intenNormal), color) cv2.imshow(windowName, histImg) return histImg img = cv2.imread('image.jpg', 1) #cv2.split()完成图像的分解,把RGB分为R, G, B channels = cv2.split(img) #遍历每一种颜色通道 for i in range(0, 3): ImageHist(channels[i], 31+i) cv2.waitKey(0) cv2.destroyAllWindows()
import cv2 import numpy as np import matplotlib.pyplot as plt img = cv2.imread('image.jpg', 1) # 1是读取彩色图片 imgInfo = img.shape height = imgInfo[0] width = imgInfo[1] count_b = np.zeros(256, np.float) count_g = np.zeros(256, np.float) count_r = np.zeros(256, np.float) for i in range(0, height): for j in range(0, width): (b, g, r) = img[i, j] index_b = int(b) index_g = int(g) index_r = int(r) count_b[index_b] = count_b[index_b] + 1 count_g[index_g] = count_g[index_g] + 1 count_r[index_r] = count_r[index_r] + 1 x = np.linspace(0, 255, 256) y1 = count_b plt.figure() plt.bar(x, y1, 0.9, alpha=1, color='b') y2 = count_g plt.figure() plt.bar(x, y2, 0.9, alpha=1, color='g') y3 = count_r plt.figure() plt.bar(x, y3, 0.9, alpha=1, color='r') plt.show()
import cv2 import numpy as np img = cv2.imread('damaged.jpg', 1) # 1是读取彩色图片 cv2.imshow('src', img) imgInfo = img.shape height = imgInfo[0] width = imgInfo[1] #绘制一个蒙板 paint = np.zeros((height, width, 1), np.uint8) #绘制一条白色竖线——>(y,x),宽度为3,一个通道 for i in range(100, 200): paint[i , 100] = 255 paint[i , 100+1] = 555 paint[i , 100-1] = 255 #绘制一条白色横线 for i in range(50, 150): paint[150, i] = 255 paint[150+1, i] = 255 paint[150-1, i] = 255 cv2.imshow('paint', paint) # 1、src ;2、mask imgDst = cv2.inpaint(img, paint, 3, cv2.INPAINT_TELEA)#原图+蒙板 #等待展示并释放资源 cv2.imshow('image', imgDst) cv2.waitKey(0) cv2.destroyAllWindows()
import cv2
import numpy as np
img = cv2.imread('image.jpg', 1) # 1是读取彩色图片
#灰度处理
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('Gray', gray)
#均衡化处理
dst = cv2.equalizeHist(gray)
cv2.imshow('dst', dst)
#等待展示并释放资源
cv2.waitKey(0)
cv2.destroyAllWindows()
import cv2 import numpy as np img = cv2.imread('image.jpg', 1) # 1是读取彩色图片 cv2.imshow('Img', img) # 分解三通道 (b, g, r) = cv2.split(img) bH = cv2.equalizeHist(b) gH = cv2.equalizeHist(g) rH = cv2.equalizeHist(r) #合并三通道 result = cv2.merge((bH, gH, rH)) #等待展示并释放资源 cv2.imshow('dst', result) cv2.waitKey(0) cv2.destroyAllWindows()
import cv2
import numpy as np
img = cv2.imread('image.jpg', 1) # 1是读取彩色图片
cv2.imshow('src', img)
imgYUV = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb)
#分解第一个通道
channelYUV = cv2.split(imgYUV)
channelYUV[0] = cv2.equalizeHist(channelYUV[0])
channels = cv2.merge(channelYUV)
result = cv2.cvtColor(channels, cv2.COLOR_YCrCb2BGR)
#等待展示并释放资源
cv2.imshow('dst', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
import cv2 import numpy as np img = cv2.imread('image.jpg', 1) # 1是读取彩色图片 #绘制一条白色竖线——>(y,x),宽度为3 for i in range(100, 200): img[i , 100] = (255, 255, 255) img[i , 100+1] = (255, 255, 255) img[i , 100-1] = (255, 255, 255) #绘制一条白色横线 for i in range(50, 150): img[150, i] = (255, 255, 255) img[150+1, i] = (255, 255, 255) img[150-1, i] = (255, 255, 255) cv2.imwrite('damaged.jpg', img) #等待展示并释放资源 cv2.imshow('image', img) cv2.waitKey(0) cv2.destroyAllWindows()
import cv2 import numpy as np img = cv2.imread('damaged.jpg', 1) # 1是读取彩色图片 cv2.imshow('src', img) imgInfo = img.shape height = imgInfo[0] width = imgInfo[1] #绘制一个蒙板 paint = np.zeros((height, width, 1), np.uint8) #绘制一条白色竖线——>(y,x),宽度为3,一个通道 for i in range(100, 200): paint[i , 100] = 255 paint[i , 100+1] = 555 paint[i , 100-1] = 255 #绘制一条白色横线 for i in range(50, 150): paint[150, i] = 255 paint[150+1, i] = 255 paint[150-1, i] = 255 cv2.imshow('paint', paint) # 1、src ;2、mask imgDst = cv2.inpaint(img, paint, 3, cv2.INPAINT_TELEA)#原图+蒙板 #等待展示并释放资源 cv2.imshow('image', imgDst) cv2.waitKey(0) cv2.destroyAllWindows()
import cv2 import numpy as np img = cv2.imread('image.jpg', 1) # 1是读取彩色图片 cv2.imshow('src', img) imgInfo = img.shape height = imgInfo[0] width = imgInfo[1] dst = np.zeros((height, width, 3), np.uint8) for i in range(0, height): for j in range(0, width): (b, g, r) = img[i, j] bb = int(b) + 40 gg = int(g) + 40 rr = int(r) + 40 if bb > 255: bb = 255 if gg > 255: gg = 255 if rr > 255: rr = 255 dst[i, j] = (bb, gg, rr) cv2.imshow('dst', dst) cv2.waitKey(0) cv2.destroyAllWindows()
import cv2
img = cv2.imread('face.jpg', 1) # 1是读取彩色图片
cv2.imshow('face', img)
# 双边滤波
dst = cv2.bilateralFilter(img, 15, 35, 35)
cv2.imshow('dst', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
import cv2
import numpy as np
img = cv2.imread('image.jpg', 1) # 1是读取彩色图片
cv2.imshow('face', img)
# 高斯滤波
dst = cv2.GaussianBlur(img, (5,5), 1.5)
cv2.imshow('dst', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
import cv2 import numpy as np img = cv2.imread('image.jpg', 1) # 1是读取彩色图片 cv2.imshow('src', img) imgInfo = img.shape height = imgInfo[0] width = imgInfo[1] dst = np.zeros((height, width, 3), np.uint8) for i in range(3, height-3): for j in range(3, width-3): sum_b = int(0) sum_g = int(0) sum_r = int(0) for m in range(-3, 3): for n in range(-3, 3): (b, g, r) = img[i+m, j+n] sum_b = sum_b + int(b) sum_g = sum_g + int(g) sum_r = sum_r + int(r) b = np.uint8(sum_b / 36) g = np.uint8(sum_g / 36) r = np.uint8(sum_r / 36) dst[i, j ] = (b, g, r) cv2.imshow('dst', dst) cv2.waitKey(0) cv2.destroyAllWindows()
import cv2 import numpy as np img = cv2.imread('image.jpg', 1) # 1是读取彩色图片 #获取图片宽高 imgInfo = img.shape height = imgInfo[0] width = imgInfo[1] img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) cv2.imshow('src', img) collect = np.zeros(9, np.uint8) dst = np.zeros((height, width, 3), np.uint8) for i in range(1, height-1): for j in range(1, width-1): k = 0 for m in range(-1, 2): for n in range(-1, 2): gray = img[i+m, j+n] collect[k] = gray k = k+1 #冒泡排序法 for k in range(0, 9): p1 = collect[k] for t in range(k+1, 9): if p1 < collect[t]: mid = collect[t] p1 = mid dst[i, j] = collect[4] cv2.imshow('dst', dst) cv2.waitKey(0) cv2.destroyAllWindows()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。