亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 Emgu c 降低圖像飽和度#

如何使用 Emgu c 降低圖像飽和度#

C#
紅顏莎娜 2022-09-04 16:52:13
我知道我們通過降低飽和度通道中的值來降低圖像的飽和度。我想用帶有emgu的c#來完成這個例如,這是使用opencv的c ++代碼:Mat Image = imread("images/any.jpg");// Specify scaling factorfloat saturationScale = 0.01;Mat hsvImage;// Convert to HSV color spacecv::cvtColor(Image,hsvImage,COLOR_BGR2HSV);// Convert to float32hsvImage.convertTo(hsvImage,CV_32F);vector<Mat>channels(3);// Split the channelssplit(hsvImage,channels);// Multiply S channel by scaling factor channels[1] = channels[1] * saturationScale;// Clipping operation performed to limit pixel values // between 0 and 255min(channels[1],255,channels[1]);max(channels[1],0,channels[1]);// Merge the channels merge(channels,hsvImage);// Convert back from float32hsvImage.convertTo(hsvImage,CV_8UC3);Mat imSat;// Convert to BGR color spacecv::cvtColor(hsvImage,imSat,COLOR_HSV2BGR);// Display the imagesMat combined;cv::hconcat(Image, imSat, combined);namedWindow("Original Image   --   Desaturated Image", CV_WINDOW_AUTOSIZE);在c#中,我有:var img = new Image<Gray, byte>("images/any.jpg");var imhHsv = img.Convert<Hsv, byte>();var channels = imhHsv.Split();// Multiply S channel by scaling factor and clip (limit)channels[1] = (channels[1] * saturationScale);我不確定如何合并修改后的飽和通道與,如果我這樣做:imHsvCvInvoke.Merge(channels, imhHsv); 有錯誤:無法將 'Emgu.CV.Image[]' 轉換為 'Emgu.CV.IInputArrayOfArrays'
查看完整描述

1 回答

?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

我把一個放進去,它的工作原理。VectorOfMatCvInvoke.Merge


Mat[] m = new Mat[3];

m[0] = CvInvoke.CvArrToMat(channels[0]);

m[1] = CvInvoke.CvArrToMat(channels[1]);

m[2] = CvInvoke.CvArrToMat(channels[2]);


VectorOfMat vm = new VectorOfMat(m);


CvInvoke.Merge(vm, imhHsv);


查看完整回答
反對 回復 2022-09-04
  • 1 回答
  • 0 關注
  • 119 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號