Opencv-python 两点距离,填充孔洞,写入中文,对比度调整

该文介绍了使用Python的OpenCV库进行图像处理的几个关键操作,包括计算两点间距离、填充图像孔洞、写入中文文本以及调整图片对比度的方法。通过静态方法实现,这些功能展示了在图像分析和编辑中常用的技术。
摘要由CSDN通过智能技术生成

引用包

import cv2 as cv
import numpy as np
import math
from PIL import ImageFont, ImageDraw, Image

两点距离

    @staticmethod
    def getDist_P2P(point0, point_a):
        distance = math.pow((point0[0] - point_a[0]), 2) + math.pow((point0[1] - point_a[1]), 2)
        distance = math.sqrt(distance)
        return distance

填充孔洞

    @staticmethod
    def FillHole(img_cv):
        im_floodfill = img_cv.copy()

        # Mask 用于 floodFill,官方要求长宽+2
        h, w = img_cv.shape[:2]
        mask = np.zeros((h + 2, w + 2), np.uint8)

        # floodFill函数中的seedPoint对应像素必须是背景
        is_break = False
        for i in range(im_floodfill.shape[0]):
            for j in range(im_floodfill.shape[1]):
                if im_floodfill[i][j] == 0:
                    seedPoint = (i, j)
                    is_break = True
                    break
            if is_break:
                break

        # 得到im_floodfill 255填充非孔洞值
        cv.floodFill(im_floodfill, mask, seedPoint, 255)

        # 得到im_floodfill的逆im_floodfill_inv
        im_floodfill_inv = cv.bitwise_not(im_floodfill)

        # 把im_in、im_floodfill_inv这两幅图像结合起来得到前景
        im_out = img_cv | im_floodfill_inv
        return im_out

写入文本(中文)

 @staticmethod
 def put_string(img_cv, put_str, x, y):
     font_path = "msyhbd.ttc"
     # 设置字体的颜色
     b, g, r, a = 255, 0, 0, 0
     # 设置字体大小
     font = ImageFont.truetype(font_path, 18)
     # 将numpy array的图片格式转为PIL的图片格式
     img_pil = Image.fromarray(img_cv)
     # 创建画板
     draw = ImageDraw.Draw(img_pil)
     # 在图片上绘制中文
     draw.text((x, y), put_str, font=font, fill=(b, g, r, a))
     # 将图片转为numpy array的数据格式
     img_s = np.asarray(img_pil)
     return img_s

图片对比度调整

  @staticmethod
  def scale_image_max(img_base):
      max_value = np.max(img_base)
      min_value = np.min(img_base)
      img_float = np.array(img_base, dtype=np.float64)
      img_scale_float = (img_float - min_value) / (max_value - min_value)
      img_scale_255 = img_scale_float * 255.0
      img_scale = np.array(img_scale_255, dtype=np.uint8)
      return img_scale
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

廷益--飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值