当前位置: 首页 > news >正文

昌宁县住房和城乡建设网站订阅号做流量 那些电影如何链接网站

昌宁县住房和城乡建设网站,订阅号做流量 那些电影如何链接网站,建立公司网站的申请,网站规划设计的步骤最近有接触过一丢丢VM4.3的模块开发. 一直有把python图像处理部分模块移植进来的打算 不过时间不够没来得及折腾.偶尔发现4.4支持py脚本 于是拿来折腾.一下午. 发现4.4支持python脚本,好开心. 首先安装VM4.4 注意一定要是4.4 打开后拖了一个模块. 但是发现import numpy imp…

最近有接触过一丢丢VM4.3的模块开发. 一直有把python图像处理部分模块移植进来的打算 不过时间不够没来得及折腾.偶尔发现4.4支持py脚本 于是拿来折腾.一下午.

发现4.4支持python脚本,好开心.

首先安装VM4.4 注意一定要是4.4

打开后拖了一个模块.

但是发现import numpy import cv2 都报错.

python没有这些怎么玩? 咱好歹自学过几天python 不能放弃吧?

于是抱着试一试的态度?

开始以为路径是

C:\Program Files\VisionMaster4.4.0\Applications\Module(sp)\x64\Logic\PyShellModule

后来搜索感觉是这里:

C:\Program Files\VisionMaster4.4.0\Applications\ModuleProxy\x64python.exeC:\Program Files\VisionMaster4.4.0\Applications\ModuleProxy\x64\Scripts
pip.exe

好了,在这里按住shift右击 >>在此处打开powershell窗口 输入cmd

然后 尝试性的在此文件夹里 pip install numpy 当运行 import numpy as np 发现已经不报错了.

好了 现在直接在这个窗口:安装

pip install numpy
pip install opencv-python
pip install pillow
pip install matplotlib
# 我暂时只需要这么多 够用 你也可以安装别的

哈哈:

接下来又遇到难题:

官方文档只介绍输入输出图像的结构体: 没有示例程序.难搞.

结构体定义如下:

# 图像数据
class ImageData:def __init__(self):self.width = Noneself.height = Noneself.pixel_format = Noneself.buffer = Noneself.dataLen = None

其他类型 数据结构比较简单 见名知意: 好吧还是放出来吧:

# 路径 文件名
#C:\Program Files\VisionMaster4.4.0\Applications\Module(sp)\x64\Logic\PyShellModule
#组合数据类型字段定义.py# ROI圆环
class RoiAnnulus:def __init__(self):self.center_x = Noneself.center_y = Noneself.inner_radius = Noneself.outer_radius = Noneself.start_angle = Noneself.angle_extend = None# 圆
class Circle:def __init__(self):self.radius = Noneself.center_x = Noneself.center_y = None# 椭圆
class ELLIPSE:def __init__(self):self.center_x = Noneself.center_y = Noneself.major_radius = Noneself.minor_radius = Noneself.angle = None# 位置修正信息
class Fixture:def __init__(self):self.init_point_x = Noneself.init_point_y = Noneself.init_angle = Noneself.init_scale_x = Noneself.init_scale_y = Noneself.run_point_x = Noneself.run_point_y = Noneself.run_angle = Noneself.run_scale_x = Noneself.run_scale_y = None# 图像数据
class ImageData:def __init__(self):self.width = Noneself.height = Noneself.pixel_format = Noneself.buffer = Noneself.dataLen = None# 直线
class Line:def __init__(self):self.start_point_x = Noneself.start_point_y = Noneself.end_point_x = Noneself.end_point_y = None# 点
class Point:def __init__(self):self.point_x = Noneself.point_y = None# 轮廓
class PointSet:def __init__(self):self.buffer = Noneself.dataLen = None# 矩形
class Rect:def __init__(self):self.rect_x = Noneself.rect_y = Noneself.width = Noneself.height = None# Box
class RoiBox:def __init__(self):self.center_x = Noneself.center_y = Noneself.width = Noneself.height = Noneself.angle = None# 多边形
class RoiPolygon:def __init__(self):self.point_num = Noneself.point_x = Noneself.point_y = None# 圆环
class Annulus:def __init__(self):self.center_x = Noneself.center_y = Noneself.inner_radius = Noneself.outer_radius = Noneself.start_angle = Noneself.angle_extend = None

直接上程序: 自己摸索的 输入输出 官方可没有示例 噢

# coding: utf-8
from ioHelper import *# pip install opencv-python
# pip install numpyimport os,sys,time
import cv2
import numpy as npdef Imagetonumpy(ImageData):# 将二进制数据转换为 NumPy 数组image_array = np.frombuffer(ImageData.buffer, dtype=np.uint8)# 调整数组形状为 (height, width, channels) # 图是3 通道 就选3 1通道就选1if (int(len(ImageData.buffer)) == int(ImageData.width*ImageData.height)):channels=1else:channels=3image_array = image_array.reshape((ImageData.height, ImageData.width,channels))if channels==3:image_array = cv2.cvtColor(image_array, cv2.COLOR_RGB2BGR)return image_array
#*******************************************************************************************
def numpytoImage(numpy_image):"""将 NumPy 数组转换为 ImageData 结构体。参数:numpy_image: NumPy 数组,形状为 (height, width, channels) 或 (height, width)。返回:ImageData: 包含图像数据的结构体。"""# 检查 NumPy 数组的形状if len(numpy_image.shape) == 1:  # 灰度图像height, width,channels = numpy_image.shapechannels = 1elif len(numpy_image.shape) == 3:  # 彩色图像height, width, channels = numpy_image.shapeelse:raise ValueError("NumPy 数组形状不正确!")if channels == 3:numpy_image = cv2.cvtColor(numpy_image, cv2.COLOR_RGB2BGR)buffer = numpy_image.tobytes()# 将 NumPy 数组转换为二进制数据# 创建 ImageData 结构体image_data = ImageData()image_data.width = widthimage_data.height = heightif channels == 3:image_data.pixel_format =  35127316 # 假设像素格式与原函数一致 35127316 if channels == 1:    image_data.pixel_format = 17301505  # 假设像素格式与原函数一致 35127316 image_data.buffer = bufferimage_data.dataLen = width*height*channels#image_data.pixel_format 必须正确 否则图像报错  我也不知带这个是啥格式啥结构 # 但是可以通过 输入图像 tmpimg.pixel_format 获取 这个数值#localVar = IoHelper(data, INIT_LOCAL_VAR)#tmpimg = moduleVar.img #读取图像#{tmpimg.width}// 宽度 759#{tmpimg.height}//高度 658#{tmpimg.pixel_format}return image_data   def Process(data) -> int:"""Write custom logic code inside the Process method. Return 0 for success or any other value for failure.""""""在Process方法内编写自定义逻辑代码, 成功返回0, 返回其他值表示失败""""""Do not delete this code block.""""""请勿删除此处代码"""moduleVar = IoHelper(data, INIT_MODULE_VAR)globalVar = IoHelper(data, INIT_GLOBAL_VAR)localVar = IoHelper(data, INIT_LOCAL_VAR)tmpimg = moduleVar.img #读取图像moduleVar.outstr = fr"""{tmpimg.width}// 宽度 759{tmpimg.height}//高度 658{tmpimg.pixel_format}//像素格式 //35127316[tmpimg.buffer]//图像数据  二进制{tmpimg.dataLen}//数据长度 //1498266{os.getcwd()}{int(len(tmpimg.buffer))}{int(tmpimg.width*tmpimg.height)}{int(len(tmpimg.buffer)) == int(tmpimg.width*tmpimg.height)}"""image_array=Imagetonumpy(tmpimg)#image = cv2.imread(tmpimg)# 使用 OpenCV 显示图像#blank_image = np.ones((200, 200, 1), dtype=np.uint8) * 255#numpy_image = np.zeros((100,100,3),dtype=np.uint8)#cv2.imshow("Image", image_array)#cv2.waitKey(2000)#cv2.destroyAllWindows()imgooop=numpytoImage(image_array)moduleVar.imgout=imgooop"""Variable initialization, to access input and output variables within the Process method.""""""变量初始化, 进入Process方法后首先调用, 否则无法访问输入、输出变量""""""* Input and output variables:* 输入、输出变量Input variables are read-only and cannot be modified; output variables are write-only and cannot be read.输入变量为只读, 不可以修改; 输出变量为只写, 不可以读取;Assume: the name of the input variable is 'in0', of type int. Its value can be obtained using tmp = moduleVar.in0假设: 输入变量名为in0, 类型为int, 可通过tmp = moduleVar.in0 读取该变量的值Assume: the name of the output variable is 'out0', of type int. Its value can be set using moduleVar.out = 9假设: 输出变量名为out0, 类型为int, moduleVar.out = 9 设置该变量的值Global variables:* 全局变量Assume: the name of the global variable is 'var0', of type int. Its value can be obtained using tmp = globalVar.GetValue('var0')假设: 输入变量名为var0, 类型为int, 可通过tmp = globalVar.GetValue('var0') 读取该变量的值, 通过 globalVar.SetValue('var0', 123) 设置该变量的值Local variables:* 局部变量Assume: the name of the local variable is 'var0', of type int. Its value can be obtained using tmp = localVar.GetValue('var0')假设: 输入变量名为var0, 类型为int, 可通过tmp = localVar.GetValue('var0') 读取该变量的值, 通过 localVar.SetValue('var0', 123) 设置该变量的值** All variables should be used strictly based on their types. If there is a need for type conversion, explicit conversion should be performed in the user code.** 所有变量都需要严格根据变量类型使用, 若有类型转换的需求, 应在用户代码内通过显示转换代码进行类型转换。Example code:示例代码如下:width = moduleVar.width + 100moduleVar.out0 = width / 2 + 20if moduleVar.in1 == 'OK':moduleVar.out1 = "OK"moduleVar.out0 = globalVar.GetValue('var0')moduleVar.out1 = localVar.GetValue('var0')globalVar.SetValue('var1', 123)localVar.SetValue('var1', moduleVar.out2)Note: Python indentation must be 4 spaces注意: Python的缩进必须为4个空格。编写自定义代码,替换下方的默认代码 passWrite custom code to replace the default code below.""""try:#PrintMsg("\nUser code start")pass#PrintMsg("User code end")except BaseException as e:PrintMsg(e)return 0

 仔细看 就是2个转换函数: process是被调用方

注意 tmpimg.pixel_format 我没搞懂啥格式.就是一串数字,但是 输入图像是多少,输出就写多少就没有问题.

美中不足的是VM 用的 python3.7 64位 如果是python3.8 那么python 版本的halcon也可以支持 

http://www.dtcms.com/a/407470.html

相关文章:

  • 【LVS入门宝典】LVS调度算法轮询(RR)深度解析:从原理到实战的公平调度之道
  • udhcpc, udhcpd由 BusyBox编译出来就好
  • 前端 CORS 深度解析
  • HT81696 概述
  • PMP-项目管理-PMBOK第六版_中文版:引论
  • 上海网站建站建设自己做的网站在百度怎么发布
  • SpringBoot+QQ 邮箱邮件开发指南:环境配置、功能实现、异常处理一站式搞定
  • Linux 数据库 Mysql8 主从复制
  • 做网站的图片房产国内免费推广网站
  • 建设网站需要分析什么条件云南软件开发项目管理
  • OpenHands+cpolar:AI编程助手的远程调试新方案
  • 从 0 到 1 掌握 ESP32 RMT(新手友好版)
  • 做设计什么网站可以兼职网站管理与建设总结
  • 少样本学习学习论文分享:多模态性帮助单模态性
  • 深入MySQL底层2-SQL优化与数据库运维管理
  • 设计站网页制作的公司选时代创信
  • 国外服装网站石岩做网站哪家好
  • 超越单边控制:介绍新一代对话智能体评测基准τ2-Bench
  • Scala • basis
  • vi设计公司深圳企业网站排名怎么优化
  • 深度学习视角下的图像分类技术体系总结
  • mysql数据库最新版下载,安装
  • 记2831.找出最长等值子数组 练习理解
  • 优秀网站作品下载免费广告设计模板网站
  • 住房和城乡建设部官方网站发布郑州发布会最新消息
  • 中国建站公司重庆装修公司网站建设
  • 怎样建网站域名公司建网站多少钱合适
  • 学习峰岹MOTORSIM(Day4)——电机磁铁变弱,转速反而飙升?
  • 网页搜索记录怎么删除神马seo服务
  • interface g0/0/0.1 概念及题目