1. 程式人生 > 其它 >[UG 二次開發 python ] 截圖,並用 opencv 顯示出來

[UG 二次開發 python ] 截圖,並用 opencv 顯示出來

需要 numpy,cv2

截圖,去除背景,只顯示主要部分


# nx: threaded
from typing import Dict
import NXOpen
import numpy as np
import cv2


def main():

    theUI = NXOpen.UI.GetUI()

    b = theUI.CreateImageExportBuilder()

    b.RegionMode = False

    b.FileFormat = NXOpen.Gateway.ImageExportBuilder.FileFormats.Jpg
    path = f"d:\\tmp\\_tmp.jpg"
    
    b.FileName = path
    b.BackgroundOption = NXOpen.Gateway.ImageExportBuilder.BackgroundOptions.CustomColor
    b.SetCustomBackgroundColor([1.0, 1.0, 1.0])

    b.EnhanceEdges = True

    b.Commit()

    b.Destroy()

    x = cv2.imread(path)
    x2 = cv2.cvtColor(x, cv2.COLOR_BGR2GRAY)
    x2 = 255 - x2
    cts, hirs = cv2.findContours(x2, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    ct = max(cts, key=cv2.contourArea)
    rct = cv2.boundingRect(ct)
    
    aymin = rct[0]
    aymax = rct[0] + rct[2]
    axmin = rct[1]
    axmax = rct[1] + rct[3]

    print(rct)
    print(x.shape)
    print([axmin, axmax, aymin, aymax])
    y = x[axmin:axmax, aymin:aymax]

    cv2.namedWindow("im")
    cv2.imshow("im", y)
    cv2.waitKey()
    cv2.destroyAllWindows()


if __name__ == "__main__":
    main()