zoukankan      html  css  js  c++  java
  • OpenCV图像拼图截图添加汉字

    import base64

    # base64通过网络传递图像
    image = cv2.imencode('.jpg', frame)[1] base64_data = base64.b64encode(image) data = base64_data.decode() image_data = 'data:image/jpeg;base64,' + data
    import cv2
    import numpy as np
    from PIL import Image, ImageDraw, ImageFont

    # 合并图像,且图像通道必须是一样的
    def
    merge_image(image1, image2): h1, w1, c1 = image1.shape h2, w2, c2 = image2.shape if c1 != c2: return "两幅图通道不一样,无法合并!" else: if w1 > w2: tmp = np.zeros([h2, w1 - w2, c1]) image = np.hstack([image2, tmp]) image = np.vstack([image1, image]) elif w1 == w2: image = np.vstack([image1, image2]) else: tmp = np.zeros([h1, w2 - w1, c2]) image = np.hstack([image1, tmp]) image = np.vstack([image, image2]) return image

    # 给图像添加汉字
    def
    cv2ImgAddText(img, text, left, top, textColor=(0, 255, 0), textSize=20): if (isinstance(img, np.ndarray)): # 判断是否OpenCV图片类型 img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) # 创建一个可以在给定图像上绘图的对象 draw = ImageDraw.Draw(img) # 字体的格式 "font/STXIHEL.TTF" 是本机电脑路径为 C:WindowsFonts 中汉字的类型 fontStyle = ImageFont.truetype( "font/STXIHEI.TTF", textSize, encoding="utf-8") # 绘制文本 draw.text((left, top), text, textColor, font=fontStyle) # 转换回OpenCV格式 return cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)
        
    # 截取图像中的坐标位置(大小是根据图像的大小来决定的)
    def screenshot_image(image): crop = image[0:512, 0:600] # 裁剪坐标为[y0:y1, x0:x1] cv2.imwrite("crop.jpg", crop)
    if __name__ == '__main__':
        img = "./0412.jpg"
        read_img = cv2.imread(img)
       # 因为我的原图是(512,512,3)所以为了保证合并的图像不发生形变,自己画了一张(512,512,3)的图
        src = np.zeros((512, 512, 3), np.uint8)
        bit_img = cv2.bitwise_not(src)
        merge_img = merge_image(read_img, bit_img)
        cv2.imshow("merge_img", merge_img)
        cv2.imwrite("./merge_img.jpg", merge_img)
    
        iamge = screenshot_image(merge_img)
    
        ret = "瞅你咋滴!"
        img = cv2ImgAddText(iamge, ret, 512/2-10, 546, (255, 0, 139), 20)
        cv2.imshow('show', img)
        cv2.waitKey(0)
  • 相关阅读:
    9. 如何在控制器或模型中获取当前登录的管理员或登录用户信息
    FastAdmin控制管理员只显示自己添加的数据
    div 隐藏
    使用JavaScript实现Input输入数据后自动计算并实时显示
    thinkphp中在页面怎么格式输出小数和时间
    fastadmin表单提交提示红色OK
    在某个域被使用或改变时,它会改变颜色。【用于提示表单已填充】
    Unix命令行学习
    Ubuntu菜鸟入门(十)—— Flash控件安装
    Ubuntu菜鸟入门(九)—— 支付宝支付控件安装
  • 原文地址:https://www.cnblogs.com/wangxiongbing/p/12683998.html
Copyright © 2011-2022 走看看