if abs(int(info_pitch) - int(camera_pitch)) < 0.0000001 and abs(int(info_yaw) - int(camera_yaw)) < 0.0000001 and abs(int(info_roll) - int(camera_roll)) < 0.0000001: ValueError: invalid literal for int() with base 10: '0.00247538'怎么改
时间: 2024-02-18 17:59:14 浏览: 164
这个错误是由于在将字符串转换为整数时出现了错误,因为字符串中包含小数点。要解决此问题,您可以使用float()函数将这些字符串转换为浮点数,然后再将它们转换为整数。
可以使用以下代码进行更改:
```python
if abs(float(info_pitch) - float(camera_pitch)) < 0.0000001 and abs(float(info_yaw) - float(camera_yaw)) < 0.0000001 and abs(float(info_roll) - float(camera_roll)) < 0.0000001:
```
在这里,我们首先使用float()函数将字符串转换为浮点数,然后再使用int()函数将其转换为整数。这应该可以解决问题。
相关问题
void Serial::sendcom(int pitch, int yaw, int flag) { //定义数据包 unsigned char data_write[8] = { 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0, 0xFE };//发八位 int high_pitch = 0; int low_pitch = 0; int high_yaw = 0; int low_yaw = 0; if (flag == 0) { } else { if (pitch >= 0) { high_pitch = pitch >> 8; //保留高八位 low_pitch = pitch & 255; //保留低八位 } else { pitch = -pitch; //二进制负数在计算机中表示补码,将负的变成正的,方便计算 high_pitch = pitch >> 8; //保留高八位 low_pitch = pitch & 255; //保留低八位 high_pitch += 128; //最后在末尾加上1,标明该数据为负数 } if (yaw >= 0) { high_yaw = yaw >> 8; low_yaw = yaw & 255; } else { yaw = -yaw; high_yaw = yaw >> 8; low_yaw = yaw & 255; high_yaw += 128; } //数据存入包 data_write[1] = high_pitch; data_write[2] = low_pitch; data_write[3] = high_yaw; data_write[4] = low_yaw; } //写入串口 size_t len_write = m_serialport.write_some(buffer(data_write), ec); /*cout << "high_pitch: " << int(data_write[1]) << endl << "low_pitch: " << int(data_write[2]) << endl << "high_yaw: " << int(data_write[3]) << endl << "low_yaw: " << int(data_write[4]) << endl;*/ if (ec) { cout << "m_serialport.write_some fail " << endl; } else { cout << "m_serialport.write_some success " << endl; } }
这段代码是一个函数,用于将pitch和yaw两个角度数据打包发送到串口上。数据包的格式是8个字节,其中第1个字节是固定的0xFF,第2和第3个字节是pitch角度值(按位分为高八位和低八位),第4和第5个字节是yaw角度值(同样按位分为高八位和低八位),第6个字节固定为0x01,第7个字节固定为0x00,第8个字节固定为0xFE。如果flag为0,表示不发送任何数据,否则按照上述格式将数据打包并发送到串口上。其中,如果pitch或yaw的值为负数,需要将其转化为补码的形式再进行打包。最后函数会返回写入串口的字节数,并通过cout输出写入结果。
copy-feats --compress=true --write-num-frames=ark,t:exp/features/mfcc/data_mfcc_23_pitch_seg/log/utt2num_frames.1 ark:- ark,scp:/work/VPR/subtools_1229/exp/features/mfcc/data_mfcc_23_pitch_seg/raw_mfcc_pitch_seg.1.ark,/work/VPR/subtools_1229/exp/features/mfcc/data_mfcc_23_pitch_seg/raw_mfcc_pitch_seg.1.scp paste-feats --length-tolerance=2 'ark:compute-mfcc-feats --write-utt2dur=ark,t:exp/features/mfcc/data_mfcc_23_pitch_seg/log/utt2dur.1 --verbose=2 --config=subtools/conf/sre-mfcc-23.conf scp,p:exp/features/mfcc/data_mfcc_23_pitch_seg/log/wav_seg.1.scp ark:- |' 'ark,s,cs:compute-kaldi-pitch-feats --verbose=2 --config=subtools/conf/pitch.conf scp,p:exp/features/mfcc/data_mfcc_23_pitch_seg/log/wav_seg.1.scp ark:- | process-kaldi-pitch-feats ark:- ark:- |' ark:- compute-mfcc-feats --write-utt2dur=ark,t:exp/features/mfcc/data_mfcc_23_pitch_seg/log/utt2dur.1 --verbose=2 --config=subtools/conf/sre-mfcc-23.conf scp,p:exp/features/mfcc/data_mfcc_23_pitch_seg/log/wav_seg.1.scp ark:- VLOG[2] (compute-mfcc-feats[5.5]:main():compute-mfcc-feats.cc:182) Processed features for key 001_20230623160347_0319007398_mentianyu-1 compute-kaldi-pitch-feats --verbose=2 --config=subtools/conf/pitch.conf scp,p:exp/features/mfcc/data_mfcc_23_pitch_seg/log/wav_seg.1.scp ark:- ERROR (compute-kaldi-pitch-feats[5.5]:main():compute-kaldi-pitch-feats.cc:88) Sample frequency mismatch: you specified 16000 but data has 8000 (use --sample-frequency option). Utterance is 001_20230623160347_0319007398_mentianyu-1
这些命令是用于特征处理的一系列操作。首先,copy-feats命令将特征数据进行复制并保存到指定的ark和scp文件中。接下来,paste-feats命令将两个特征数据进行拼接。
其中,compute-mfcc-feats命令用于计算MFCC特征,并将结果存储在ark文件中。compute-kaldi-pitch-feats命令用于计算音高特征,并将结果存储在ark文件中。然而,在最后一条命令中,compute-kaldi-pitch-feats命令出现了错误。错误信息指示样本频率不匹配,你指定了16000Hz,但数据实际上是8000Hz。建议使用--sample-frequency选项来指定正确的样本频率。该错误发生在utterance为"001_20230623160347_0319007398_mentianyu-1"的情况下。
阅读全文