这里对于灰度图像:
image[10, 10] = (255, 255, 0))
patch1=image[0:100, 0:100]
cv2.imshow(“patch1”, patch1)
#这里用随机值画一个圆
import cv2
import numpy as np
canvas=np.zeros((300,300,3),dtype="unit8")
#返回一个随机int:
radius=np.numpy.randint(5,200)
color=np.random.randint(0,256,size=(3,)).tolist()
pt=np.random.randint(0,200,size=(2,))
#用生成的随机值画圆,包含圆的中心点,半径,圆的颜色
cv2.circle(canvas,tuple(pt),radius,color,-1)
M=np.float32([[1,0,25],[0,1,50]])
#平移
shifted_image=cv2.warpffine(image,M,image.shape[0],image.shape[1])
#以某点为圆心,进行图片的旋转
(h,w)=image.shape[:2]
#这里使用了地板除//,在除以2以后向下取整
center=(w//2,h//2)
#旋转135度,图片不缩放(1.0)
M=cv2.getRotationMatrix2D(center,135,1.0)
cv2.warpffine(image,M,image.shape[0],image.shape[1])
#缩放,在缩小时直接丢弃某些值,在放大时,在相邻两像素间进行插值填充,默认的插值填充方法是
#双线性插值使用邻近两点的平均值为新生成区域的像素值对于OpenCV而言,官方建议缩小使用cv2.INTER_AREA,放大使用cv2.INTER_LINEAR
import cv2
src = cv2.imread('D:/cv2.png', cv2.IMREAD_UNCHANGED)
#percent by which the image is resized
scale_percent = 50
#calculate the 50 percent of original dimensions
width = int(src.shape[1] * scale_percent / 100)
height = int(src.shape[0] * scale_percent / 100)
dsize = (width, height)
output = cv2.resize(src, dsize)
#翻转:其中第二个参数0表示水平翻转,1表示垂直翻转,-1表示水平加垂直翻转
flipped_image=cv2.flip(image, −1)
#裁剪:裁剪就是numpy中的切片操作
cropped_image=image[x1:x2,y1:y2]
#cv2中的加减运算与numpy中不同,cv2要求加减运算结果在0至255之间,超出范围则截断:
x,y=unit8([100]),unit8([200])
cv2.add(x,y)#结果为255
cv2.substract(x,y)//结果为0
也就是像素级别的布尔运算,经过bool运算的两mat大小应该相同
cv2.bitwise_and
cv2.bitwise_or
cv2.bitwise_xor #异或,两个像素值不同,结果为1
cv2.bitwise_not
#遮罩区域,在位操作的基础上,提取感兴趣的操作:其中mask为1的部分被显示,0被隐藏
image=cv2.bitwise_and(image,mask=mask)
import numpy as np
import cv2
(B,G,R)=cv2.split(image)
merged=cv2.merge([B,G,R])
#颜色空间的转换:
#颜色空间转换主要使用cv2.cvtColor函数,第一个参数为需要进行转换的图像对象,第二个为颜色空间转#换形式,常用的有cv2.COLOR_BGR2GRAY、cv2.COLOR_ BGR2HSV
cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
#颜色直方图是图片中像素点的分布,通过统计,可以直观地用曲线表达出哪些像素值多,哪些像素值少。在#RGB空间下,可以简单地将值域分为4个区间,每个区间代表一个64px(pixel),即[0,64)、[64.128)、#[128,192)、[192,255] 4个区间,然后统计图片中所有像素落在这4个区间的像素点个数
grayImage=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
#其参数意义为:
#图像,通道索引(灰度图的通道索引赋值为0),接下来是mask,只计算mask为1的区域,下一个参数是根据通道设置的区间数,如果为彩色区间,可为[8,8,8]:最后一个是图像的值域
hist=cv2.calcHist([grayImage],[0],None,[256],[0,256])
常用的平滑方法有均值、高斯、中值、双边)
cv2.blur(image,(3,3))
cv2.gaussianBlur(image,(3,3),0)
cv2.medianBlur(image,3)
#5,21,21分别为滤波半径及sigmax及sigmay的值
cv2.bilateralFilter(image,5,21,21)
平滑降噪,求梯度,非极大值抑制与滞后阈值
#opencv使用canny算子完成此操作
import numpy as np
import cv2
image = cv2.imread('test.jpg')
cv2.imshow("image", image)
blured = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blured = cv2.GaussianBlur(blured, (5, 5), 0)
cv2.imshow("Blurred", blured)
canny = cv2.Canny(blured, 30, 150)
cv2.imshow("Canny", canny)
cv2.waitKey(0)