需要 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()