python在图像上画线

python代码

import math
import os
import sympy as sy
import numpy as np
import cv2
from osgeo import gdal

def Polar2Cartesian(theata):
    """
    极坐标转直角坐标系
    :return: 斜率
    """
    pi = 3.14
    radian = pi * theata / 180
    return math.tan(radian)
def Painter(ori,theta):
    """
    painter a picture
    :param ori: origin image
    :param theta: θ
    :return: img
    """
    width, height = ori.shape[0], ori.shape[1]
    img = np.zeros((height,width))
    slope = Polar2Cartesian(theta)
    if theta < 90:
        min_offset = int(0 - slope * width)
        max_offset = height - 1
    else:
        min_offset = 1
        max_offset = 2 * height - int(slope * width)
    for offset in range(min_offset, max_offset, 30):
        if theta < 45:
            for i in range(0, width):
                y = int(slope * i) + offset
                if y >= height:
                    break
                # idx += 1
                img[y, i] = 255
        elif theta <= 90:
            """
            x = 1/slop
            """
            for i in range(0, height):
                x = int((i - offset) / slope)
                if x >= width or x < 0:
                    continue
                # idx += 1
                img[i, x] = 255
        elif theta <= 135:
            for i in range(0, height):
                x = int((i - offset) / slope)
                if x >= width or x < 0:
                    continue
                # idx += 1
                img[i, x] = 255
        else:
            for i in range(0, width):
                y = int(slope * i) + offset
                if (y >= height or y < 0) and offset < height:
                    break
                if (y >= height or y < 0) and offset >= height:
                    continue
                # idx += 1
                img[y, i] = 255
    return img

 

python在图像上画线

上一篇:os.getcwd()


下一篇:requests 使用 stream 流形式下载文件