LabVIEW色彩分类识别 基础篇 15

style="text-indent:2em;">大家好,今天给各位分享如何用LabVIEW做颜色识别的一些知识,其中也会对物体识别怎么弄好看的颜色进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!

本文目录

  1. 酷家乐怎么把颜色刷到定制材质上
  2. 如何用LabVIEW做颜色识别
  3. 摄影中如何利用颜色的优势拍出来好看的片子
  4. 一个物体的暗面怎么调色

酷家乐怎么把颜色刷到定制材质上

酷家乐是一款家居设计软件,可以帮助用户进行家居设计和装修。如果您想在酷家乐中将颜色刷到定制材质上,可以按照以下步骤操作:

1.在酷家乐中选择“材料库”中的材质,然后将其拖放到您的设计场景中。

2.在场景中选择您想要应用颜色的家具或装饰物件,然后右键单击该对象并选择“编辑材质”。

3.在材质编辑器中,选择您想要应用颜色的材质部分,例如纹理或颜色。

4.点击“颜色”选项卡,选择您想要应用的颜色。您可以使用酷家乐中的标准颜色,也可以手动输入RGB值来创建自定义颜色。

5.点击“应用”按钮,保存您的更改。

6.如果您需要对多个材质应用相同的颜色,可以在材质编辑器中选择所有相关材质,然后重复上述步骤。

注意:在应用颜色之前,请确保您的材质已经正确地导入到酷家乐中,并且没有任何问题或错误。

如何用LabVIEW做颜色识别

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

摄影中如何利用颜色的优势拍出来好看的片子

摄影的艺术表现力包括很多的方面,而摄影色彩的准确表达则是重中之重。摄影是色彩缤纷的,不管是自然世界还是人为世界,都充满了无限丰富和不断变化的色彩。颜色通常是与情绪相关的。不同的色彩能给人以心理上的不同影响,能激发人们的情感,在心理上情绪上产生共鸣。而在实际拍摄过程中,为了达到预想中的色彩平衡,需要有不同的拍摄角度,从不同的距离拍摄甚至改用不同的镜头来实现。如何在摄影中掌握好色彩平衡,拍摄出好的作品。色相:这是一种色彩属性,可以将其分类为红色、黄色、绿色、蓝色或者紫色(之间具有不同的等级)。数值:颜色的亮度,即在黑与白之间分级的位置。浓度:颜色的纯度,与“饱和度”相关。冷暖色、对比色、平衡色、相似色都有不同的结果呈现出一种美的画面。

色彩与色调一样,不同的色彩对于容易吸引注意力有不同潜效果,画面背景也需要认真的查看,主要是背景中可能存在的会分散注意力的色彩。引我们的画面主题都是明快的色彩,色彩作用可以帮助我们利用这种方式来获得良好的效果。可以选择利用特定颜色“装扮”我们的拍摄主题,使其从周围相关色彩中脱颖而出。

一个物体的暗面怎么调色

一般用灰色来画暗面,但是调好看的灰色要注意背景和亮面颜色等情况,这里推荐用以下方法来调灰色:

1.直接用现成的灰色加倾向色

2.湖蓝(钴蓝)+土黄+紫罗兰+白色(灰色)+倾向色

3.草绿(或中绿、粉绿)+赭石(或熟褐)+白色+倾向色

4.土黄+青莲(或紫罗兰)+白色+倾向色

在实践中还要看环境色的影响,才能完成灰色调的画,补色一起易脏,建议如果不是必要,尽量不要进行补色。

文章分享结束,如何用LabVIEW做颜色识别和物体识别怎么弄好看的颜色的答案你都知道了吗?欢迎再次光临本站哦!

安卓安全帽佩戴识别 安全帽识别 安全帽检测 安全帽颜色分类 安全帽计数,视频安全帽识别 实时安全帽识别 摄像头安全帽识别 yolo安全帽识别 tiny yolo