ai文件怎么转曲(ai文件转曲后怎么改文字)
12612023-12-05
style="text-indent:2em;">老铁们,大家好,相信还有很多朋友对于ps一个物体怎么快速识别主题和物体识别怎么弄好看的相关问题不太懂,没关系,今天就由我来为大家分享分享ps一个物体怎么快速识别主题以及物体识别怎么弄好看的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
本文目录
使用拍照识物app可以帮助用户轻松了解自己所不认识的物体、品牌或是人物,这里为大家整理了一些拍照识物app,拥有非常强大的智能识物功能,支持植物识别、人物是被、物体识别等等,只需拍照扫一扫,可以快速了解你所想要知道的内容,线上识别,轻松获取信息,感兴趣的小伙伴快来下载这些拍照识物app吧!
苹果手机识别图片物品方法如下:
向上轻扫照片或轻点。
轻点出现在照片中或照片信息结果顶部的图标,以查看有关物体的Siri知识和更多信息。轻点,然后轻点照片以关闭“看图查询”结果。
你先升个ps2019,去简易下载站下载也行,然后在选择主题
C#调用NI的库函数实现颜色识别检测(在halcon环境下)
一直使用C#+halcon进行视觉算法的开发,但是遇到了一个非常普遍的需求,对物体进行颜色识别。在halcon中颜色识别主要分两种方式,一种为进行色域转化,由RGB转换为HSV后根据颜色表在H或者其他通道中对不同的颜色值进行区分,此种方式缺点是在进行建模时必须知道目标ROI的H通道值,且与其他ROI的值差别较大,不然非常容易误报。另一种方法即建立分类器,使用mlp或者gmm进行训练,然后将要识别的区域给分类器让其判断,这其中有一个缺点为,在建立分类器时必须知道当前有几种颜色,然后建立起对应输出的分类器,并且再有样本添加进入时也必须按同时将这几种颜色都加入进去(即使当前状态只有一种颜色出现差异需要再训练),同时,也不能再追加一种新的颜色。
在LabView的Vision模块中,有直接的颜色匹配模式,即将选定的ROI区域划分为16个向量再与检测的ROI作比较,识别较为准确。故本文介绍在C#环境下调用LV中的颜色识别函数,显示窗口依然使用halcon的HWindowControl(毕竟主要的开发算法还是在halcon下写的,并且个人感觉LV的图像显示窗口做的并不好,杂乱!)。
首先,调用LV需要先安装labview并且安装visionassistan模块,安装好后在其安装路径下有两个dll,分别为NationlInstryments.Vision.dll和NationlInstryments.Vision.Common.dll,同时引用halcondonet.dll(halcon的dll),找不到在哪的可以使用软件everything进行搜索。在自己的工程中引用这两个dll,同时引用namespace,添加halcon图像显示窗口,使用该文章中https://blog.csdn.net/qizijuesha/article/details/77400312的封装后的显示窗口:
usingNationalInstrumens.Vision
usingNationInstruments.Vision.Analysis;
usingHalconDotNet;
下面上代码:
privateVisionImagemyVisionImage=newVisionImage();//VisionImage作为LV库函数中的图像输入
//从本地读取图像
privatevoidbuttonReadImage_Click(objectsender,EventArgse)
{
ImagePreviewFileDialogimageDialog=newImagePreviewFileDialog();
imageDialog.InitialDirectory="D:\\";
imageDialog.Filter="AllFiles(*.*)";
if(imageDialog.ShowDialog()==DialogResult.OK)
{
stringimagePath=imageDialog.FileName;
LoadSelectedImage(imagePath);//使用LV读取图像
}
}
privatevoidLoadSelectedImage(stringimagePath)
{
myVisionImage.ReadFile(imagePath);
myVisionImage.Type=ImageType.Rgb32;//次句一定要加上,不然在进行识别时报错,默认读取进入后是U8单通道格式
}
在halcon窗口上进行roi的划定
privateHObjectGetModelDrawRegion(HObjectdrawImage,refHTuplehv_Row1,refHTuplehv_Column1,refHTuplehv_Row2,refHTuplehv_Column2)
{
HObjectho_ModelRegion,ho_TemplateImage,ho_RegionSelect,ho_RegionUnion,ho_RegionModel;
HObjectho_ModelContours,ho_TransContours=null;
HTuplehv_TempHomMat2D=newHTuple();
HTuplehv_HomMat=newHTuple();
//初始化本地变量值
HOperatorSet.GenEmptyObj(outho_ModelRegion);
HOperatorSet.GenEmptyObj(outho_TemplateImage);
HOperatorSet.GenEmptyObj(outho_ModelContours);
HOperatorSet.GenEmptyObj(outho_TransContours);
HOperatorSet.GenEmptyObj(outho_RegionSelect);
HOperatorSet.GenEmptyObj(outho_RegionUnion);
HOperatorSet.GenEmptyObj(outho_RegionModel);
try
{
HObjectho_temp_brush=newHObject();
hWindow_Final1.DrawModel=true;//缩放功能禁用
HOperatorSet.SetSystem("border_shape_models","false");
ho_ModelRegion.Dispose();
HalconToolClass.set_display_font(hWindow_Final1.hWindowControl.HalconWindow,10,"mono",newHTuple("true"),newHTuple("false"));
HalconToolClass.disp_message(hWindow_Final1.hWindowControl.HalconWindow,"在窗口中将MARK1点位置框出,点击右键完成","window",20,20,"red","false");
hWindow_Final1.Focus();
HOperatorSet.SetColor(hWindow_Final1.hWindowControl.HalconWindow,"red");
HOperatorSet.DrawRectangle1(hWindow_Final1.hWindowControl.HalconWindow,outhv_Row1,outhv_Column1,outhv_Row2,outhv_Column2);
HOperatorSet.GenRectangle1(outho_ModelRegion,hv_Row1,hv_Column1,hv_Row2,hv_Column2);
hWindow_Final1.DrawModel=false;
if(hv_Row1.D!=0)
{
brush_region.Dispose();
brush_region=ho_ModelRegion;
}
else
{
hWindow_Final1.HobjectToHimage(drawImage);
HalconToolClass.set_display_font(hWindow_Final1.hWindowControl.HalconWindow,20,"mono",newHTuple("true"),newHTuple("false"));
HalconToolClass.disp_message(hWindow_Final1.hWindowControl.HalconWindow,"未画出有效区域","window",20,20,"red","false");
}
HalconToolClass.set_display_font(hWindow_Final1.hWindowControl.HalconWindow,20,"mono",newHTuple("true"),newHTuple("false"));
hWindow_Final1.DispObj(ho_ModelRegion,"yellow");
ho_TemplateImage.Dispose();
HOperatorSet.ReduceDomain(drawImage,ho_ModelRegion,outho_TemplateImage);
}
catch
{
MessageBox.Show("划定模板框出错!");
}
finally
{
ho_ModelRegion.Dispose();
}
returnho_TemplateImage;
}
划定好ROI后进行颜色的学习,并将学习完毕的颜色向量存入数据库
privatevoidbuttonRecColor_Click(objectsender,EventArgse)
{
HTuplehv_Row1=null,hv_Column1=null,hv_Row2=null,hv_Column2=null;
HObjectho_ModelRegion;
ho_ModelRegion=GetModelDrawRegion(halconImage,refhv_Row1,refhv_Column1,refhv_Row2,refhv_Column2);
double[]lvRoi=ConvertHalconToLV(hv_Row1,hv_Column1,hv_Row2,hv_Column2);//在halcon中矩形的存储为左上行列坐标,右下行列坐标;
//而在LV中,矩形存储方式为中心行列坐标,weight和height长
//查询插入语言
sqlCommand="INSERTINTOroi_rec_inf(id,left_top_row,left_top_column,right_bottom_row,right_bottom_column)SELECT(SELECTMAX(id)FROMroi_rec_inf)+1,'"+hv_Row1+"','"+hv_Column1+"','"+hv_Row2+"','"+hv_Column2+"';";
mySqlClass.UsualSqlCommand(sqlCommand);
RectangleContourrectangle=newRectangleContour(lvRoi[0],lvRoi[1],lvRoi[2],lvRoi[3]);//矩形
RoirectangleRoi=rectangle.ConvertToRoi();
//该函数为调用的LV中学习颜色的函数,ROI使用halcon窗口中画出的ROI,若此时不存入数据库,也可直接使用colorInformation进行颜色识别
ColorInformationcolorInformation=Algorithms.LearnColor(myVisionImage,rectangleRoi,ColorSensitivity.Low,(int)80);
sqlCommand=@"INSERTINTOcolor_match(
rec_id,color1,color2,color3,color4,color5,color6,color7,color8,color9,color10,color11,color12,color13,color14,color15,color16)
SELECT(SELECTMAX(id)fromroi_rec_inf),
'"+colorInformation.Information[0]+"','"+colorInformation.Information[1]+"','"+colorInformation.Information[2]+"','"+colorInformation.Information[3]+"','"+colorInformation.Information[4]+"','"+colorInformation.Information[5]+"','"+colorInformation.Information[6]+"','"+colorInformation.Information[7]+"','"+colorInformation.Information[8]+"','"+colorInformation.Information[9]+"','"+colorInformation.Information[10]+"','"+colorInformation.Information[11]+"','"+colorInformation.Information[12]+"','"+colorInformation.Information[13]+"','"+colorInformation.Information[14]+"','"+colorInformation.Information[15]+"'";
mySqlClass.UsualSqlCommand(sqlCommand);//插入颜色数据
}
privatedouble[]ConvertHalconToLV(HTuplehv_Row1,HTuplehv_Column1,HTuplehv_Row2,HTuplehv_Column2)
{
doublewidth=0,height=0;
if(hv_Row2>hv_Row1)
{
width=hv_Row2-hv_Row1;
}
if(hv_Column2>hv_Column1)
{
height=hv_Column2-hv_Column1;
}
double[]lvRoi={hv_Column1,hv_Row1,width,height};//需要传出的左上横纵坐标及宽,长信息
returnlvRoi;
}
现在进行图像颜色识别,给定要识别的ROI区域及对应的图像和之前保存的颜色向量,函数返回匹配分值
privatevoidMatchColor(HObjectimageMatch)
{
VisionImagemyImage=newVisionImage();
myImage.Type=ImageType.Rgb32;
LoadSelectedImage("F:\\tempImage.jpeg",refmyImage);
double[]lvROI=ConvertHalconToLV(Convert.ToDouble(dtSelect.Rows[0]["left_top_row"].ToString()),Convert.ToDouble(dtSelect.Rows[0]["left_top_column"].ToString()),Convert.ToDouble(dtSelect.Rows[0]["right_bottom_row"].ToString()),Convert.ToDouble(dtSelect.Rows[0]["right_bottom_column"].ToString()));
RoirectangleRoi=newRoi(newRectangleContour(lvROI[0],lvROI[1],lvROI[2],lvROI[3]));//矩形
qlCommand="SELECTcolor1,color2,color3,color4,color5,color6,color7,color8,color9,color10,color11,color12,color13,color14,color15,color16FROMcolor_matchWHERErec_id='"+Convert.ToInt32(dtSelect.Rows[0]["id"].ToString())+"';";
DataTabledtColor=mySqlClass.SelectDataUsual(sqlCommand);
double[]colorValue=DTConvertToDouble(dtColor);
ColorInformationmyColorInformation=newColorInformation(newCollection<double>(colorValue));
Collection<int>scores=Algorithms.MatchColor(myImage,myColorInformation,rectangleRoi);
if(scores[0]<700)
{
DoNGSomething(Convert.ToInt32(dtSelect.Rows[0]["id"].ToString()));
richTextBox1.Text="NG";
}
else
{
DoOKSomething(Convert.ToInt32(dtSelect.Rows[0]["id"].ToString()));
richTextBox1.Text="OK";
}
}
总结:
先在halcon窗口上划定ROI区域,将此ROI转换为LV中Roi类型,然后调用ColorInformation=Algorithms.LearnColor(image,roi,low,threshold)方法,该函数返回16行向量值ColorInformation即为该区域的颜色分布
给定ROI区域(同样在halcon中划定并进行转换),调用Algorithms.MatchColor(image,ColorInformation,roi)进行指定区域的颜色识别,该方法返回一个匹配分值
在给定image值时,一定要将其typeImage类型设定为RGB32
OK,本文到此结束,希望对大家有所帮助。