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

建设网站的目标和作用芜湖建设网站

建设网站的目标和作用,芜湖建设网站,wordpress 博客 注册,如何用ps做网站ui最近有接触过一丢丢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.yayakq.cn/news/493955/

相关文章:

  • 学做网站好学吗网页制作三巨头
  • 东莞ppt免费模板下载网站怎么下载1688上的视频
  • 萝岗公司网站建设哈密建设厅网站
  • 西安易码建站淄博做网站小程序的公司
  • 西安建设局网站首页wordpress 七牛 上传
  • 普通网站报价多少谷歌play
  • 织梦手机网站怎么修改密码网站详情页用什么软件做
  • 如何用代码制作网站互联网保险业务
  • 在哪里可以做海外淘宝网站手机网站营销方案
  • 建网站要租服务器吗黄金网站软件免费
  • 图片展示网站南宁怎么做网站
  • 专业做淘宝网站绍兴禹城网页设计
  • python网站建设代码服务器怎么添加网站
  • 最少的钱怎么做网站怎么在百度创建网页
  • 通用网站后台管理 asp.net 源码网页qq登录入口首页
  • 学生网站模板广州网站推广自助
  • 衡水稳定的网络建站网站源码免费资源网
  • 网站建设维护网页设计成都手机建站
  • 厦门网站建设a旅游网站建设目标网站分类
  • 自己做h5制作开发广告开户南京seo
  • 手机版网站嵌入代码手机兼职赚钱正规平台
  • 章丘建设网站金融网站框架模板
  • 麦吉太原网站建设丽怎么代理上海十大工业设计公司
  • 创业项目的网站微信官网入口手机版
  • 网站业务Wordpress博客怎么盈利
  • 湖北专业网站建设耗材外包服务合同
  • 南通市经济开发区建设局网站设计非常漂亮的网站
  • 网站建设制作公司哪家国内永久免费的crm系统软件
  • 太原做网站设计山东省建设科技协会网站首页
  • 购物商城网站开发实验报告中国建设教育协会培训报名网站