错误现象:
一开始是使用QFileDialog::getOpenFileName 选择文件进行读取,程序报错
程序长这样:
void Read_image() {
QString filename;
state = 0;
filename = QFileDialog::getOpenFileName(this,
tr("选择图像"),
"",
tr("Images (*.png *.bmp *.jpg *.tif *.GIF )"));
if (filename.isEmpty())
{
return;
}
string str = filename.toStdString(); // 将filename转变为string类型;
// Local iconic variables
HObject ho_Clip, ho_Dark, ho_Single, ho_Selected;
// Local control variables
HTuple hv_Width, hv_Height, hv_UsedThreshold;
//clip.hdev: Orientation of clips
//
//打开一张图像
//const char* ch = str.c_str();
HTuple hTuple;
hTuple = filename.toStdString().c_str();
ReadImage(&ho_Clip, hTuple);
}
尝试努力:
还使用了QString转HTuple,还是不行,中间多次变换转换思路。
最后直接写入图片路径,验证还是会出现同样的问题,得出是读取图像处理错。
得出错误:
最后借鉴一位老哥的博客,得出错误所在,原来是图片格式错误。
转自这位博主:Halcon读图出错怎么办?ReadImage常见错误与处理方法(C++)_Color Space的技术博客_51CTO博客
错误:图片实际格式与图片后缀名不一致,导致读取文件错误。
查找正确的格式:打开软件“UltraEdit”(下载地址:http://www.onlinedown.net/soft/7752.htm)使用16进制查看:
数据前几位即为图片格式,一般有:
后面换了一张图片读取正确。
总结:
也是想记录一下学习过程中遇到的一些问题大家一起看吧,找这个问题所在也是浪费了挺久的时间的,所以想写出来让大家更容易看到。