050-OpenCV 图像修补

话不多说,上代码,看结果。

import cv2
import numpy as np

'''  
    cv2.imread(filename,flags)
# filename为文件名,图片与.py文件在一个文件夹时输入文件名即可
# 不在一个文件夹时输入图片的路径和名字
# flags为图片的颜色类型,默认为1,灰度图像为0
'''
img = cv2.imread('51.jpg')
'''
   cv2.imshow(winname,mat)
# winname为显示的窗口
# mat 需要显示的图像
'''
cv2.imshow('img', img)
'''
    np.zeros(shape, dtype, order)
# print(img.shape)  结果为(640, 640, 3)
# shape(高,宽,色彩通道数) 
# 右键图片,属性里显示的是宽度,高度,正好相反
# dtype 常用的是np.unit8
'''
mask = np.zeros((img.shape[0], img.shape[1], 1), np.uint8)
'''
    cv2.rectangle(img,pt1,pt2,color,thickness,lineType,shift)
# 画矩形
# img,被画矩形的图像  pt1、pt2矩形的左上角、右下角坐标
# color,直线的颜色,BGR颜色  thickness,线的宽度,-1的时候表示填充矩形
# lineType,有三种cv2.LINE_AA、cv2.LINE_4、cv2.LINE_8
# cv2.LINE_AA抗锯齿,这种类型的线看起来平滑点
# shift,坐标精确到小数点后第几位
'''
cv2.rectangle(mask, (200, 50), (200 + 100, 50 + 100), (255, 255, 255), -1)

cv2.imshow('mask', mask)
'''
    dst = cv2.inpaint(src,mask, inpaintRadius,flags)
# src:输入8位1通道或3通道图像
# inpaintMask:修复掩码,8位1通道图像  非零像素表示需要修复的区域
# dst:输出与src具有相同大小和类型的图像
# inpaintRadius:算法考虑的每个点的圆形邻域的半径
flags: INPAINT_NS基于Navier-Stokes的方法  Alexandru Telea的INPAINT_TELEA方法

'''
dst = cv2.inpaint(img, mask, 3, cv2.INPAINT_TELEA)

# dst = cv2.inpaint(img,mask,3,cv2.INPAINT_NS)

cv2.imshow('result', dst)
'''
cv2.imwrite(filename,img,params)
# filename为保存图片的文件名,img为保存图片的数据
# params,jpeg格式时是图片质量,1-100,默认95
# png时是压缩级别,0-9,默认为3,级别越高,图片尺寸越小

'''
cv2.imwrite('result.jpg', dst)
'''
cv2.waitKey(delay)
#  delay为正数时,延时delay毫秒结束
#  想要用按下某个键时退出可用以下方法:
#  if(cv2.waitKey(0)  == ord('q')):
        exit(0)
#别的方法也行,不唯一
'''
if cv2.waitKey(0) & 0xFF == 27:
    exit(0)
'''
cv2.destroyWindow(winname)
#结束窗口,winname为窗口名
cv2.destroyAllWindows() 
#结束所有窗口
'''
cv2.destroyAllWindows()

结果如下图。
在这里插入图片描述
就先这样,遇到别的再补充。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值