行走的蓑衣客

导航

 

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

 

posted on 2021-09-12 22:00  行走的蓑衣客  阅读(1162)  评论(0编辑  收藏  举报