联为机器视觉的课程笔记

1.像素 2592x1944 相当于 500万像素

2.图像 本质是二位数组(内存里面是一维数组)
图像越大 分别率越大

3.特征对比相对大的 方便寻找大的 灰度图片进行处理

  1. 图像->区域->图像

函数
read_image() 从磁盘读取文件
get_image_size() 获取图片大小
dev_close_window() 关闭显示图片的窗口
dev_open_window() 打开显示图片窗口
threshold() 根据灰度值查找区域 全局
dyn_threshold() 局部域值
binary_threshold()
mean_image() 均值滤波
connection() 打散查找的区域
select_shape() 按照打散的区域按照特征值查找
fill_up() 填充区域
reduce_domain() 抠图
threshold)sub_pix() 亚像素灰度值查找
select_contours_xld() 按照亚像素查找线的长度
count_obj() 按照亚像素获取查找结果

shape_trans()		对形状进行仿射变换。它可以对点、直线、圆、矩形等形状进行平移、旋转和缩放等操作opening_circle()	开运算rgb_to_gray()		彩色图转灰度图

p7 BLOB分析
图像处理流程
1 获取图像
2 图像分割
3 区域处理
4 特征提取

秘诀:定位特征 逐步求精

p8

p9
图像分割介绍
1 灰度直方图
2 阈值分割
threshold
binary_threshold
mean_image + dyn_threshold
fast_threshold
auto_threshold
var_threshold

3区域集合运算及变换1集合运算union1union2differenceintersection2区域变换connectionfill_upshape_transskeletiom4形态学opening	开closing 闭dilation 膨胀erosion 腐蚀boundary

p10

p11
画ROI区域和区域生成
保存区域,读取区域
数据值及对象输出
联合Vc进行变成输出结果,进行代码架构

1画ROI区域并生成区域生成区域draw_circlegen_circledraw_ellipsegen_ellipsedraw_rectangle1gen_rectangle1draw_rectangle2gen_rectangle2draw_regiondraw_linegen_region_linegen_region_points其他gen_grid_regiongen_checker_regiongen_region_hline2保存区域读取区域(小件左右检测)read_regionwrite_region3生成空对象,向空对象中添加对象gen_empty_regiongen_empty_objconcat_obj4区域间距离点到点	distance_pp点到直线	distance_pl点到区域的最长最短	distance_pr直线到区域最长最短	distance_lr区域与区域最短	distance_rrhttps://www.bilibili.com/video/BV1x5411H7Ns/?p=11&spm_id_from=pageDriver&vd_source=9ed5e7be5d8180766946b38de14a1781	

p12

p13

p14

p15
p16
https://www.bilibili.com/video/BV1x5411H7Ns?p=16&vd_source=9ed5e7be5d8180766946b38de14a1781

write_region	写区域图片

p17

p19
https://www.bilibili.com/video/BV1x5411H7Ns?p=19&spm_id_from=pageDriver&vd_source=9ed5e7be5d8180766946b38de14a1781

图片 image			hobject    	
区域 region			
数组	image := [,]
变量				hTuplex的像素当量和y的像素当量不一样工作流程
1采集图片
2预处理 二值化 形态学
3求出图像中心点 特征学
4防射变换 变成机械坐标

p22
1几何变换
平移 move_region
缩放 zoom_region
镜像 mirror_region
倒置 transpose_region
极坐标与笛卡尔坐标互转 polar_trans_region, polar_trans_region_inv

closing 闭运算    --> 先膨胀在腐蚀   去掉目标内的孔洞
opening 开运算	  --> 先腐蚀在膨胀	 去掉目标外的孔洞通常当有噪声的图像使用阈值二值化后,所得到的边界是很不平滑的,物体区域具有一些错判的孔洞,背景区域散布着一些小的噪声
物体,连续的开和闭运算可用显著的改善这种情况boundary  边界
intersection 相交erosion  腐蚀
scale 比例
zoom 快速移动shape_trans	区域变换invert 反转光度立体法OCR识别是把区域抠出来

p23
https://www.bilibili.com/video/BV1x5411H7Ns/?p=23&spm_id_from=pageDriver&vd_source=9ed5e7be5d8180766946b38de14a1781
仿射变换
区域的任意变换 affine_trans_region
创建二维变换矩阵 hom_mat2d_identity
平移 hom_mat2d_translate
缩放 hom_mat2d_scale
旋转 home_ma2d_rotate
刚性防射变换 vector_to_rigid
拓展图像变换 affine_trans_image

分为三步1创建矩阵

p24
https://www.bilibili.com/video/BV1x5411H7Ns/?p=24&spm_id_from=pageDriver&vd_source=9ed5e7be5d8180766946b38de14a1781

difference 剪掉区域检测常用方案   结合一起使用1 面积2 灰度值contours  轮廓
segment  分割
complement 补集
intensity 强度means	 方法
deviation  差

p25 一维码识别
https://www.bilibili.com/video/BV1x5411H7Ns/?p=25&spm_id_from=pageDriver&vd_source=9ed5e7be5d8180766946b38de14a1781

p26
https://www.bilibili.com/video/BV1x5411H7Ns?p=26&vd_source=9ed5e7be5d8180766946b38de14a1781

candidate  候选
variable 多样
cylinder 圆柱体
majory	多数的
determine 绝对
decode 解码

p28
https://www.bilibili.com/video/BV1x5411H7Ns/?p=28&spm_id_from=pageDriver&vd_source=9ed5e7be5d8180766946b38de14a1781

二维码的流程和方法
掌握二维码的图像滤波symbol  象征
XLD		边缘轮廓

p29
https://www.bilibili.com/video/BV1x5411H7Ns?p=29&vd_source=9ed5e7be5d8180766946b38de14a1781

recognition 识别
enhanced   增强模式
morphology  形态学
polaryty	极性的
contrast	对比度均值滤波  mean_image
中值滤波 median_image
腐蚀  erosion
膨胀  dilation//不是一个正常屏幕拍照的情况
1.极坐标转换2.投射变换
hom_vector_hom_mat2d(...)	//创建二维矩阵
projective_trans_image(...)	//投射变换https://www.bilibili.com/video/BV1x5411H7Ns/?p=29&vd_source=9ed5e7be5d8180766946b38de14a1781时间:52.35灰度图没有前景背景

p30
OCR 光学字符识别

使用Halcon自带的.omc文件字库(训练好的)invert_image()		反转像素图片gray_range_rect()	 灰度范围

p31

https://www.bilibili.com/video/BV1x5411H7Ns/?p=31&spm_id_from=pageDriver&vd_source=9ed5e7be5d8180766946b38de14a1781

ocr需要白底黑字的图像,所以要反转

p32
https://www.bilibili.com/video/BV1x5411H7Ns/?p=32&spm_id_from=pageDriver&vd_source=9ed5e7be5d8180766946b38de14a1781

FontNmae := ‘Industrial_0-9A-Z_NoRej’
read_ocr_class_mlp(FontNmae, OCRHandle)

for i:=1 to NumberC by 1
select_obj(SortedRegions, ObjectSelected, i)
do_ocr_single_class_mlp(ObjectSelected, ImageInvert, OCRHandle, 1, Class, Confidence)
disp_message(WindowHandle, Class, ‘image’, MeanRow-50, Column[i-1]-10, ‘yellow’, ‘false’)

endfor

decompose3(...)
clip_region(...)	剪切
sub_image(...)  图像减法 
intensity()		//灰度平均值
expand_gray_ref()	//灰度膨胀
paint_region(...)	//将图片与相交区域之外填充  可用做白底黑字

p33
https://www.bilibili.com/video/BV1x5411H7Ns/?p=33&spm_id_from=pageDriver&vd_source=9ed5e7be5d8180766946b38de14a1781

p34

gray_opening_rect(...)	
fill_up_shape()
delete_file()
append_ocr_trainf(...)	//训练文件训练过程1生成训练用的文件append_ocr_trainf将区域,图像和对应的字符装载到该文件中2创建训练模型并进行训练create_ocr_class_mlp,trainf_ocr_class_mlp3保存结果到训练文件中write_ocr_class_mlp4清空缓存clear_ocr_class_mlp

p35
https://www.bilibili.com/video/BV1x5411H7Ns/?p=35&spm_id_from=pageDriver&vd_source=9ed5e7be5d8180766946b38de14a1781

p36
ocr助手使用

p37 图像滤波需求
https://www.bilibili.com/video/BV1x5411H7Ns?p=37&spm_id_from=pageDriver&vd_source=9ed5e7be5d8180766946b38de14a1781

blob分析  --- 二值化的过程1获取图片
2图像预处理平滑处理均值滤波	mean_image	mean_n中值滤波	median_image median_rectRank滤波(秩序值滤波)	rank_image	rank_rect高斯滤波	gauss_filter图像平滑	smooth_image图像增强均值增强	emphasize illuminate一致性扩散增强	coherence_enhancing_diff比例增强	scale_image_max冲击滤波	shock_filter图像算术图像加法	add_image图像减法	sub_image图像乘法	milt_image图像除法	div_image图像翻转	inner_image图像灰度取大	max_image图像灰度取小	min_image绘图比例拉伸	scale_image图像几何变换仿射变换	affine_trans_image镜像变换	mirror_image透射变换	projective_trans_image		projective_trans_image_size极坐标变换	polar_trans_image_ext图像旋转	rotate_image缩小图像	zoom_image_size3图像分割
4区域处理  		集合运算  	complement	difference	intersection	symm_difference	union1	union2几何运算	affine_trans_image	mirror_region	move_region	polar_trans_region	polar_trans_region_invprojective_trans_imagetranspose_regionzoom_region区域变换background_segclip_regionclip_region_relclosest_point_transformconnectiondistance_transformeliminate_runsexpand_regionfill_upfill_up_shapehamming_change_regioninterjacentjunctions_skeletionmerge_regions_line_scanpartion_dynamicpartion_rectanglerank_regionremove_noise_regionshape_transskeleton split_skeleton_linessplit_skeleton_region特征过滤area_centerarea_holescircularitycompactnessconnect_and_holesconnectioncontlengthconvexitydiameter_regioneccentricityelliptic_axiseuler_numberfind_neighborsget_region_indexget_region_thicknesshamming_distanceinner_circleinner_rectanglemoments_region_2ndmoments_region_2nd_invarmoments_region_center_invarorientation_regionrectangularityregion_featuresroundnessrunlength_distributionrunlength_featuresselect_region_pointsselect_region_spatialselect_shapeselect_shape_protoselect_shape_stdsmallest_circlesmallest_rectangle1smallest_rectangle2spatial_relation形态学boundaryclosingclosing_circleclosing_rectangle1dialation_circledialation_rectangle1dilation1erosion_circleerosion_recrangle1gen_struct_elementsopeningopening_circleopening_rectangletop_hat5特征提取定位特征找出数据

p38
https://www.bilibili.com/video/BV1x5411H7Ns?p=38&spm_id_from=pageDriver&vd_source=9ed5e7be5d8180766946b38de14a1781

平滑处理mean_image()edges_sub_pix(...)		边缘提取edges  边缘rank_rect	等级
gauss_filter	高斯滤波		对周围对象进行加权平均值

p39
https://www.bilibili.com/video/BV1x5411H7Ns?p=39&spm_id_from=pageDriver&vd_source=9ed5e7be5d8180766946b38de14a1781

图像增强边缘起伏不大的增强  黑的更黑 白的更白emphasize(...)	增强模式coherence_enhancing_diff
min_max_gray(...)	获取最大最小灰度值sub_image	可用于一个产品两次点胶前后判断,加工前后判断		

p42
gray_erosion_rect(…) 类似秩序值滤波

gray_disc_se
gray_closing
gray_closing_rect
gray_closing_shape
gray_dilation_rect
gray_dilation_shape
gray_erosion_rect
gray_erosion_shape
gray_opening
gray_opening_shape
gray_opening_rect
gray_rangge_rect
gray_tophat

p43
图像截取合并

抠图
crop_part(...)		坐标不是原图
reduce_domain(...)	坐标还是原图拼图
tile_images_offset
tile_images校验畸变桶状畸变枕形畸变畸变调整change_rafial_distortion_image(...)https://www.bilibili.com/video/BV1x5411H7Ns/?p=43&spm_id_from=pageDriver&vd_source=9ed5e7be5d8180766946b38de14a1781

p44
图像灰度特征

paint_region(...)	将某区域的灰度值重新填充新的灰度值
paint_gray(...)		把一幅图像的灰度填充到另一幅图中生成新的图像select_gray(...)	灰度区域特征选择entropy	熵 - 体系混乱程度的变量
https://www.bilibili.com/video/BV1x5411H7Ns?p=44&vd_source=9ed5e7be5d8180766946b38de14a1781c++面试题
https://www.bilibili.com/video/BV1CE411r7oj/?p=34&spm_id_from=pageDriver&vd_source=9ed5e7be5d8180766946b38de14a1781intensity(...)	平均灰度和方差
area_center_gray(...)
gray_histo(...)	灰度直方图
gen_region_histo(....)

p45

使用相机的sdk进行开发HAcq开头都是相机的文件

p46
重点:介绍相机的SDK开发流程

	调用相机的sdk  --稳定性和速度项目初期使用HALCON  到后期使用相机的sdk  提高速度和稳定性1安装相机1)装相机驱动(常用接口 usb2.0,usb3.0,GIGE,CAMLINK,1394A,1394B2)若有采集卡,还需要安装卡的驱动3)测试驱动是否找到设备4)测试厂商提供的测试软件5)找到相机的SDK(dll,lib等),并测试提供的Demo2试用相机1)用厂商的采集软件打开相机抓图2)用halcon的采集助手抓图3相机的设置配置1)分辨率和感兴趣区域2)曝光(曝光时间第可用提高速度)及增益3)帧率(1s采集多少图)4)白平衡(彩色相机需要白平衡)5)触发方式(连续、软触发、硬触发)4看提供的例程,看抓图流程并自己写代码采图,然后转成halcon的HObject变量1)相机厂商一般会提供MFC或者console例程2)选择一个可用采图的程序打开运行调试,分析执行过程3)自己创建一个新的从新开始加入头文件,库文件,及动态链接库进行采图测试4)获取图像指针,使用halcon函数gen_image1_extern,gen_image3_extern等函数转成HObject变量并将其显示在窗口上5使用单张采图模式将相机SDK中需要使用的代码接口做到自己的项目中1)先调试demo中的Basic项目

p47
写一点调试一点

p48
回调函数采图

1回调函数概念
2先分析SDK中使用回调函数进行采图1)找到使用回调函数的例子Basic,并调试看结果3将SDK中的代码转码成自己工程中进行采图1)添加回调函数2)在初始化时登记回调函数到驱动3)在回调函数中将采集的图像数据转成halcon变量4)在抓图中直接使用图像变量,建议使用事件同步

p50
代码复用+拓展

p51
尽量选择畸变少的镜头,尽量不矫畸变

p53
使用标定板进行畸变矫正

p55

p58
crop_part 取一部分

threshold_sub_pix(...)	阈值取边缘 轮廓convex 凸性
contours 轮廓平滑轮廓				smooth_contours_xld
形状变换				shape_trans_xld
封闭轮廓				close_contours_xld
对轮廓排序				sort_contours_xld
修剪出矩形区域的轮廓	clip_contours_xld
修剪出轮廓两端			clip_end_points_contours_xld按直线和圆弧的特性分割轮廓		segment_contours_xld	
生成多边形		gen_contours_polygon_xld		
对象组合		concat_obj		
高斯轮廓线		line_gauss()	adjacent  	临近的
colinear	共线的
cocircular	共圆的
cotangential 余切的
straight 直的合并端点临近的轮廓:				union_adjacent_contours_xld
合并位于同一条直线上的轮廓		union_colinear_contours_xld
合并属于同一圆上的轮廓			union_cocircular_contours_xld
合并具有切线关系的轮廓			union_cotangential_contours_xld
合并具有相似方向的轮廓			union_straight_contours_xld拟合为圆		fit_circle_contour_xld
拟合为直线		fit_line_contour_xld
拟合为矩形2     fit_rectangle2_contour_xldregress_counter(...)

p59
https://www.bilibili.com/video/BV1x5411H7Ns?p=59&vd_source=9ed5e7be5d8180766946b38de14a1781

clip_region_rel	减区域

p60

https://www.bilibili.com/video/BV1x5411H7Ns?p=60&spm_id_from=pageDriver&vd_source=9ed5e7be5d8180766946b38de14a1781

p61
获取轮廓坐标 get_counter_xld
获取轮廓点的特征 get_countour_attrib_xld

保存轮廓	write_contour_xld_dxf
读取轮廓	read_contour_xld_dxf

p62
对轮廓进行仿射变换,CAD的图纸变为halcon的像素点 affine_trans_contour_xld

实际例子
read_contour_xld_dxf(...)
初始化一个空的仿射变换矩阵	hom_mat2d_identity(...)
缩放						hom_mat2d_scale(...)
仿射轮廓					affine_trans_contour_xld(...)二维仿射变换,顾名思义就是在二维平面内,
将对象进行平移、旋转、缩放等变换的行为(还有其他的变换,
这里仅论述这最常见的三种)。create_shape_model_xld(...)			创建模板
find_shape_model_xld(...)			查找模版

1、仿射变换的大致流程:
① 通过hom_mat2d_identity初始化一个空的仿射变换矩阵(即[1.0, 0.0, 0.0, 0.0, 1.0, 0.0]);
② 在初始化空的仿射矩阵中增加模板和目标之间的平移、旋转和缩放关系,
用到的算子包括hom_mat2d_translate(平移)、hom_mat2d_rotate(旋转)、
hom_mat2d_scale(缩放)等生成仿射变换矩阵(这几个算子可以叠加或者重复使用)
③ 得到模板和目标的仿射变换矩阵之后,可以对图像、区域或XLD执行仿射变换,
用到的算子包括affine_trans_image(仿射图像)、affine_trans_region(仿射区域)、
affine_trans_contour_xld(仿射轮廓)。

rigid	刚性根据两个以上点对计算计算刚性仿射变换矩阵,支持旋转和平移	 vector_to_rigid(::Px,Py,Qx,Qy:HomMat2D)
根据两个以上点对计算相似仿射变换矩阵,支持旋转、平移和缩放	 vector_to_similarity(::Px,Py,Qx,Qy:HomMat2D)双MARK定位 模板匹配
https://www.bilibili.com/video/BV1x5411H7Ns?p=62&vd_source=9ed5e7be5d8180766946b38de14a1781 

p63
polar_trans_contour_xld_inv

轮廓的几何变换生成对应的平行轮廓		gen_parallel_contour_xld极坐标转换				polar_trans_contour_xld_inv投射转换				projective_trans_contour_xld轮廓的集合运算闭合轮廓的交集			intersection_closed_contours_xld闭合轮廓的差			difference_closed_contours_xld合并闭合轮廓			union2_closed_contours_xld

p64
https://www.bilibili.com/video/BV1x5411H7Ns/?p=64&spm_id_from=pageDriver&vd_source=9ed5e7be5d8180766946b38de14a1781

一维测量的方法
重复精度distance_cc		轮廓到轮廓的距离,c是轮廓的意思
distance_sc		计算线段与轮廓之间的距离
distance_lc		直线到轮廓的距离
distance_pc		点到轮廓的距离两个直线角度	angle_II(...)angle_lx(...)deg(...)	将弧度角转为度数

p65
使用测量助手进行测量
加载图像
绘制测量对象
参数设置
代码生成

gen_measure_rectangle(...)
measure_oairs(...)

P65

p66
测量算子
创建测量对象 gen_measure_rectangles 和 gen_measure_arc (arc-弧长)
提取直线边缘对 measure_pairs(结果成对出现)
提取边缘位置 measure_pos(结果顺序出现)
释放测量工具 close_measure

p67
https://www.bilibili.com/video/BV1x5411H7Ns/?p=67&spm_id_from=pageDriver&vd_source=9ed5e7be5d8180766946b38de14a1781

客户需求分析 — 内容分析

视觉单看法
1项目工程师能与客户验收负责人确认需求,为什么要放在第一位呢,是因为我们接单
拿到的往往不是最终用户给我们的需求,而是设备中间商或者业务转话,传过来的,这样的话就会出现误传或者错传,甚至丢失
信息,进而导致在做设计的时候并不是得到最终需求,需求没有清湖明白的结果只有两个:1)不停的改和商务斡旋,最终勉强成交
2)改到无能为力,直到将工程师干辞职,项目放弃。所以不管什么产品,需求是第一位的。

p68

69
https://www.bilibili.com/video/BV1x5411H7Ns/?p=69&spm_id_from=pageDriver&vd_source=9ed5e7be5d8180766946b38de14a1781

p70

p71模板匹配
1模板匹配原理
1)什么是模板匹配
first_example_shape_matching.hdev
print+check
find_ncc_model_exposure
2)模板匹配流程

2模板参数介绍1)图像金字塔	Numberlever2)起始角度		AngleStart3)角度范围		AngleExtern4)角度步长		AngleStep5)优化算法		Optimization6)极性			Metric7)对比度		Contrast8)最小对比度	MinContrast9)缩放比		scale(find_scale_shape_model.hdev)3查找模板参数1)最小匹配分数		Score2)匹配最大个数		NumMatches3)最大重叠比		MaxOverlap(1-允许重叠  0-不允许重叠)4)亚像素精度		SubPixel5)搜索时使用的金字塔层数	NumLevels(0-最高效)6)贪婪度			Greediness(0-慢而安全  1快且可能匹配失败)4模板匹配与仿射变换进行定位(rectify_result.hdev)注意模板的对称性,对仿射变换的影响5模板匹配与仿射变换进行缺陷检测inspect		检查从点和角度计算刚性仿射变换  vector_angle_to_rigid

p73
https://www.bilibili.com/video/BV1x5411H7Ns/?p=73&spm_id_from=pageDriver&vd_source=9ed5e7be5d8180766946b38de14a1781

p74

P75

P76
基于形状的模板匹配
1)创建边缘模板 create_shape_model
2)创建边缘轮廓模板 create_shape_model_xld
3)查找边缘模板 find_shape_model
4)创建具有缩放比的模板 create_scaled_shape_model
5)查找具有缩放比的模板 find_scale_shape_model
6)查看模板图像和模板区域 inspect_shape_model
7)获取模板轮廓 get_shape_model_contours
8)获取模板的位置 get_shape_model_region
9)保存模板 write_shape_model
10)读取模板 read_shape_model
11)清除模板 clear_shape_model

基于相关性的模板匹配
1)创建模板 create_ncc_model
2)find_ncc_model

基于灰度的模版匹配
1)最小匹配分数 Score

https://www.bilibili.com/video/BV1x5411H7Ns/?p=76&spm_id_from=pageDriver&vd_source=9ed5e7be5d8180766946b38de14a1781

p81
坐标系标定

坐标系之间的转换,求两个坐标系之间的关系,比例系数

p82
vector_to_mat2d(…)
vector_to_rigid(…)

//#define USING_FILE

#define USING_HKVISION

#ifdef USING_FILE

#endif

#ifdef USING_HKVISION

#endif

halcon
1区域 --像素 region

2轮廓 --亚像素  xld

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/815910.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解析ShardingSphere:强大的分布式数据库中间件

在现代软件开发中,随着数据量的爆炸性增长和系统复杂度的持续上升,传统的单体数据库架构已经难以应对日益增长的性能与扩展性需求。针对这一挑战,ShardingSphere应运而生,它提供了一套全面的解决方案,帮助开发者构建更…

Offer必备算法25_01背包_四道力扣题详解(由易到难)

目录 ①牛客DP41 【模板】01背包 问题一解析 问题二解析 解析代码 滚动数组优化代码 ②力扣416. 分割等和子集 问题解析 解析代码 滚动数组优化代码 ③力扣494. 目标和 问题解析 解析代码 滚动数组优化代码 ④力扣1049. 最后一块石头的重量 II 问题解析 解析代…

音视频学习—音视频理论基础(2)

音视频学习—音视频理论基础(2) 1、音频的基本概念2、声音的三要素3、声音的本质4、奈奎斯特采样定律5、采样和采样率6、采样数和采样位数7、量化8、比特率(码率)9、响度和强度10、编码11、音频帧12、音频文件大小的计算总结 1、音…

【GEE实践应用】按照字段提取想要的研究区域

有的时候,我们在GEE中加载研究区域时,我们现有的矢量数据可能不止自己想要的研究区域的范围,这个时候,为了避免在ArcGIS中重新导出打包上传等操作,我们可以在GEE中按照字段进行选择我们想要的研究区域。下面是操作实例…

Leetcode二十三题:合并K个升序链表【22/1000 python】

“合并K个升序链表”,这是一道中等难度的题目,经常出现在编程面试中。以下是该问题的详细描述、解题步骤、不同算法的比较、代码示例及其分析。 问题描述 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中…

IOT系统上位机从OPC 服务器采集,时间戳的问题哪些现象?

上位机从OPC服务器采集数据时,时间戳问题可能出现以下现象: 1. 时间偏差: - 时区不一致:OPC服务器可能使用UTC(协调世界时)作为基准,而上位机可能使用本地时区。如果不进行适当转换&#xff0c…

【重学C语言】七、一维数组

【重学C语言】七、一维数组 一维数组基本语法数组长度访问数组中的数据数组下标创建数组并初始化方法一:在声明时初始化方法二:部分初始化方法三:动态初始化方法四:指定大小的初始化用字符串初始化字符数组基本示例数字类数组的常用操作字符类数组常用操作注意事项排序算法…

浏览器密码框明文密文兼容edge的问题

在网页中注册会员的时候,经常需要输入用户名(账号)和密码,在输入密码的时候,为了防止用户输错密码,经常会给密码框加一个小功能,就是点击密码框右侧闭着的小眼睛,可以让密文变成明文…

代码随想录算法训练营DAY23|C++二叉树Part.9|669.修建二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

文章目录 669.修建二叉搜索树递归法思路伪代码CPP代码 108.将有序数组转换为二叉搜索树递归伪代码CPP代码 538.把二叉搜索树转换为累加树思路递归伪代码递归CPP代码迭代法 669.修建二叉搜索树 力扣题目链接 文章讲解:669.修建二叉搜索树 视频讲解:你修剪…

【教学类-51-01】20240411动物皮毛图片的彩色打印PDF制作(一页两张图片,2个表格)

作品展示 背景需求: 为了便于快速做出A4两份图片的效果,设计以下代码,进行图片的PDF合成打印 代码参考: 【教学类-50-06】20240410“数一数”4类星号图片制作PDF学具-CSDN博客文章浏览阅读531次,点赞8次,收…

医院预约系统微信小程序APP前后端

医院预约系统具体功能介绍:展示信息、可以注册和登录, 预约(包含各个科室的预约,可以预约每个各个医生),就诊引导包含预约的具体信息,包含就诊时间、就诊科室、就诊医生以及就诊人信息、和支付状…

基于”Python+”多技术融合在蒸散发与植被总初级生产力估算中的应用

熟悉蒸散发ET及其组分(植被蒸腾Ec、土壤蒸发Es、冠层截留Ei)、植被总初级生产力GPP的概念和碳水耦合的基本原理;掌握利用Python与ArcGIS工具进行课程相关的操作;熟练掌握国际上流行的Penman-Monteith模型,并能够应用该…

pytorch中通道数不一样怎么办?

在深度学习中,1x1卷积(有时也称为点卷积)是一种有效的技术,常用于改变卷积神经网络中特征图的通道数。这种方法可以在不改变特征图空间维度(高度和宽度)的情况下,调整其深度(通道数&…

有真的副业推荐吗?

#有真的副业推荐吗# 我做副业项目的时候,认识了一位带娃宝妈,讲一下她空闲时间做副业赚钱的故事吧。在一个温馨的小家庭里,李婷是一位全职宝妈,她的主要任务是照顾和陪伴自己可爱的宝宝。然而,随着宝宝逐渐长大&#x…

Mysql的事务隔离级别以及事务的四大特性。

MySQL 的事务隔离级别是数据库管理系统中的一个重要概念,它决定了事务如何隔离和影响其他并发事务。MySQL 支持四种事务隔离级别,分别是:读未提交(READ UNCOMMITTED)、读已提交(READ COMMITTED)…

【MATLAB源码-第188期】基于matlab的64QAM系统相位偏移估计EOS算法仿真,对比补偿前后的星座图误码率。

操作环境: MATLAB 2022a 1、算法描述 1. 引言 M-QAM调制技术的重要性 现代通信系统追求的是更高的数据传输速率和更有效的频谱利用率。M-QAM调制技术,作为一种高效的调制方案,能够通过在相同的带宽条件下传输更多的数据位来满足这一需求…

Ubuntu使用SSH的X11Forwarding

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、X11Forwarding是什么?二、使用步骤1.打开SSH配置2.MobaXterm 三、测试总结 前言 有没有那么一种需求,就是有时候你需要将远端的画面…

蓝桥杯赛事介绍

蓝桥杯是由工业和信息化部人才交流中心主办的全国性IT学科赛事,全称为“蓝桥杯全国软件和信息技术专业人才大赛”。该赛事旨在推动软件和信息领域专业技术人才培养,提升大学生的创新能力和就业竞争力,为行业输送具有创新能力和实践能力的高端…

dbeaver数据库语言编辑器设置jdbc驱动

打开 dbeaver 软件 数据库 -> 驱动管理器 以mysql为例 双击 MySQL -> 库 -> 添加工件 然后 打开maven组件库 官网 找到mysql驱动对应的maven工件地址 复制进去然后确认就行了 参考 大神博客

HTTP 域名和主机是一回事吗?有了主机和域名,如何建站?

域名不等于主机名,例如baidu.com是一个权威域的域名,但是根本没有一个主机的名字叫做baidu.com,但是dns.baidu.com就是一个主机名,它就是负责baidu.com的服务器的主机名,www.baidu.com也是一个主机名,它是百度web服务器的主机名。…