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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM