[英]C# OpenCV DrawChessboardCorners' lines are black and white when saving image
FindCheckerBoard 方法將 BitmapSource 作為輸入,並使用 BitmapSourceConverter 將其轉換為 Mat。
然后它會經過 FindChessboardCorners 和 CornerSubPix 等過程。 使用從 CornerSubPix 中找到的點,我在原始 Mat 上使用了 DrawChessBoardCorners。
這是問題所在,也是我嘗試調試的問題。
如何將輸出保存為帶有彩色線條的圖像?
編輯:我在opencv-python中嘗試了幾乎相同的邏輯,保存的圖像有彩色線條。 我假設它使用 opencvsharp 或 BitmapSource 輸入。
public int FindCheckerBoard(JObject param, BitmapSource imageSource, out BitmapSource imageResult)
{
JObject _param = param;
Mat matSource = OpenCvSharp.WpfExtensions.BitmapSourceConverter.ToMat(imageSource);
Mat matResult = matSource.Clone();
Size patternSize = new Size(4, 6);
Size imageSize = new Size(0, 0);
List<Mat> objectPoints = new List<Mat>();
var objectPointsArray = Create3DChessboardCorners(patternSize, 0.02f).ToArray();
var objectPointsMat = Mat<Point3f>.FromArray(objectPointsArray);
imageSize.Width = matSource.Width;
imageSize.Height = matSource.Height;
Mat<Point2f> corner = new Mat<Point2f>();
var ret = Cv2.FindChessboardCorners(matSource, patternSize, corner);
if (ret)
{
Mat gray = new Mat();
Point2f[] corner2 = null;
if (matSource.Channels() >= 3)
{
Cv2.CvtColor(matSource, gray, ColorConversionCodes.BGR2GRAY);
corner2 = Cv2.CornerSubPix(gray, corner.ToArray(), new OpenCvSharp.Size(11, 11), new OpenCvSharp.Size(-1, -1), TermCriteria.Both(30, 0.001));
}
else
{
corner2 = Cv2.CornerSubPix(matSource, corner.ToArray(), new OpenCvSharp.Size(11, 11), new OpenCvSharp.Size(-1, -1), TermCriteria.Both(30, 0.001));
}
var showPicture = _param[SHOW_PICTURE].ToObject<bool>();
Cv2.DrawChessboardCorners(matResult, patternSize, corner2, ret);
if (showPicture == true)
{
Cv2.ImShow("FindCheckerBoard", matResult);
Cv2.ImWrite(@"C:\1.png", matResult);
Cv2.WaitKey(0);
}
}
imageResult = OpenCvSharp.WpfExtensions.BitmapSourceConverter.ToBitmapSource(matResult);
原來,從BitmapSource轉換的matSource是8UC4的MatType,而來自Imread()的python的Mat是8UC3。
通過將 8UC4 轉換為 8UC3,輸出圖像具有彩色線條。
Cv2.CvtColor(matSource, matSource, ColorConversionCodes.BGRA2BGR);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.