python在图片上添加文字 - cv2模块的安装与使用

一、cv2的安装

  1. 一般来说,在pycharm中安装包的方式如下:
    请添加图片描述
  2. 点击“+”之后,在搜索框中输入“cv2”,点击下方的“Install package
    请添加图片描述
  3. 但是这个包在安装过程中一直报错,安装不成功,错误信息如下:
    请添加图片描述
  4. 于是在看了很多大佬的解决方法之后,最终用如下方法成功解决:
    安装上述操作步骤,将"cv2"成"opencv-python",即可安装成功。
    请添加图片描述
  5. 如上图,"opencv-python"已经在packages列表中了,在程序中import cv2,没有报错,说明这个包现在可以开始使用了。
    请添加图片描述

二、cv2的使用-在图片上添加文字

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time : 2021/8/6 17:24
# @Author : sxgjmn
import cv2

input_img = 'C:/Users/DELL/Desktop/pathway-gene-ppi_legend.png'
output_img = 'C:/Users/DELL/Desktop/pathway-gene-ppi_legend_2.png'
edge_node_dir = 'C:/Users/DELL/Desktop/生信项目/Cytoscape网络开发/test_data_2'

def get_node_count_pvalue(indir):
	# Get max value and min value of nodes Count and pvalue
    node_file = indir + '/node_edge/pathway-pathway_node.txt'
    count = []
    pvalue = []
    infile = open(node_file, 'r')
    for line in infile.readlines():
        row = line.rstrip().split('\t')
        if row[0] == 'id':
            continue
        else:
            count.append(row[3])
            pvalue.append(row[2])
    count = list(map(int, count))
    pvalue = list(map(float, pvalue))
    max_count = max(count)
    min_count = min(count)
    max_pvalue = '{:.3f}'.format(max(pvalue))
    min_pvalue = '{:.3f}'.format(min(pvalue))
    infile.close()
    return max_count, min_count, max_pvalue, min_pvalue

def get_edge_value(indir):
	# Get max and min value of edges value
    edge_file = indir + '/node_edge/pathway-pathway_edge.txt'
    value = []
    infile = open(edge_file, 'r')
    for line in infile.readlines():
        row = line.rstrip().split('\t')
        if row[0] == 'id':
            continue
        else:
            value.append(row[3])
    value = list(map(int, value))
    max_value = max(value)
    min_value = min(value)
    infile.close()
    return max_value, min_value

def add_text_png(input_img, output_img, edge_node_dir):
	# Add text in image
    in_img = cv2.imread(input_img)
    max_count, min_count, max_pvalue, min_pvalue = get_node_count_pvalue(edge_node_dir)
    max_value, min_value = get_edge_value(edge_node_dir)
    cv2.putText(in_img, max_pvalue, (105, 69), cv2.FONT_HERSHEY_SIMPLEX, 0.55, (0, 0, 0), 1, cv2.LINE_AA)  
    cv2.putText(in_img, min_pvalue, (105, 225), cv2.FONT_HERSHEY_SIMPLEX, 0.55, (0, 0, 0), 1, cv2.LINE_AA)
    cv2.putText(in_img, str(min_count), (120, 345), cv2.FONT_HERSHEY_SIMPLEX, 0.55, (0, 0, 0), 1, cv2.LINE_AA)
    cv2.putText(in_img, str(max_count), (120, 410), cv2.FONT_HERSHEY_SIMPLEX, 0.55, (0, 0, 0), 1, cv2.LINE_AA)
    cv2.putText(in_img, str(min_value), (120, 520), cv2.FONT_HERSHEY_SIMPLEX, 0.55, (0, 0, 0), 1, cv2.LINE_AA)
    cv2.putText(in_img, str(max_value), (120, 560), cv2.FONT_HERSHEY_SIMPLEX, 0.55, (0, 0, 0), 1, cv2.LINE_AA)
    cv2.imshow("pathway-gene-ppi_legend_2", in_img)
    cv2.waitKey()
    cv2.imwrite(output_img, in_img)

add_text_png(input_img, output_img, edge_node_dir)

上面的程序里,前两个函数是处理数据的,第三个才是添加文字的,"(105, 69)"这里的数字是文字在图片上的位置,"0.55"是字体的大小,其他参数基本不需要调。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值