无法在 C# 中转换类型的对象
Unable to cast object of type in C#
我正在尝试将我的图像从我的 MS Access 数据库读取到我的特征对象识别器中。但是现在,我收到一个错误
Unable to cast object of type 'System.Byte[]' to type 'Emgu.CV.Image`2[Emgu.CV.Structure.Gray,System.Byte]'.
我不知道这个错误是关于什么的。下面是我的代码。
int count = reader.FieldCount;
while (reader.Read())
{
labels.Add(reader["FaceName"].ToString());
trainingImages.Add((Image<Gray,byte>)reader["FaceImage"]);
}
if (TSTable.Rows.Count != 0)
{
//// //TermCriteria for face recognition with numbers of trained images like maxIteration
MCvTermCriteria termCrit = new MCvTermCriteria(ContTrain, 0.001);
////Eigen face recognizer
EigenObjectRecognizer recognizer = new EigenObjectRecognizer(
trainingImages.ToArray(), //database faceimage list
labels.ToArray(), //facename list
3000,
ref termCrit);
有人可以帮我解决这个问题吗?我已经尝试了一个多星期,但仍然无法找到任何解决方案。谢谢。
问题出在这一行。
(Image<Gray,byte>)reader["FaceImage"]
问题是 reader["FaceImage"]
的类型是 byte[]
和 Image<Gray,byte>
- 不是
byte[]
的基础 class
- 没有来自
byte[]
的显式或隐式转换运算符。
你要的是
{
labels.Add(reader["FaceName"].ToString());
byte[] buffer = (byte[]) reader["FaceImage"];
Image<Gray,byte> image = new Image<Gray,byte>(buffer);
trainingImages.Add(image);
}
如果 reader["FaceImage"]
是图像文件,那么您需要从文件创建一个新图像:
Image<Bgr, Byte> img1 = new Image<Bgr, Byte>(reader["FaceImage"]);
trainingImages.Add(image);
我正在尝试将我的图像从我的 MS Access 数据库读取到我的特征对象识别器中。但是现在,我收到一个错误
Unable to cast object of type 'System.Byte[]' to type 'Emgu.CV.Image`2[Emgu.CV.Structure.Gray,System.Byte]'.
我不知道这个错误是关于什么的。下面是我的代码。
int count = reader.FieldCount;
while (reader.Read())
{
labels.Add(reader["FaceName"].ToString());
trainingImages.Add((Image<Gray,byte>)reader["FaceImage"]);
}
if (TSTable.Rows.Count != 0)
{
//// //TermCriteria for face recognition with numbers of trained images like maxIteration
MCvTermCriteria termCrit = new MCvTermCriteria(ContTrain, 0.001);
////Eigen face recognizer
EigenObjectRecognizer recognizer = new EigenObjectRecognizer(
trainingImages.ToArray(), //database faceimage list
labels.ToArray(), //facename list
3000,
ref termCrit);
有人可以帮我解决这个问题吗?我已经尝试了一个多星期,但仍然无法找到任何解决方案。谢谢。
问题出在这一行。
(Image<Gray,byte>)reader["FaceImage"]
问题是 reader["FaceImage"]
的类型是 byte[]
和 Image<Gray,byte>
- 不是
byte[]
的基础 class
- 没有来自
byte[]
的显式或隐式转换运算符。
你要的是
{
labels.Add(reader["FaceName"].ToString());
byte[] buffer = (byte[]) reader["FaceImage"];
Image<Gray,byte> image = new Image<Gray,byte>(buffer);
trainingImages.Add(image);
}
如果 reader["FaceImage"]
是图像文件,那么您需要从文件创建一个新图像:
Image<Bgr, Byte> img1 = new Image<Bgr, Byte>(reader["FaceImage"]);
trainingImages.Add(image);