cv::String path_str(path); cv::String path1_str(path1);没有与参数列表匹配的
时间: 2024-10-15 16:13:38 浏览: 35
在这段代码片段中,`cv::String path_str(path)` 和 `cv::String path1_str(path1)` 的作用是在OpenCV库中创建两个字符串变量,分别存储`path`和`path1`的值。`cv::String` 是OpenCV中用于表示字符串的数据类型。当你尝试将这两个表达式初始化为`path`和`path1`的副本时,如果`path`和`path1`不是有效的字符串类型或者其他非字符串对象,则会抛出类型错误或转换错误,因为它们没有直接对应的字符串构造函数。
如果没有找到能够匹配参数的合适构造函数或转换方式,编译器无法自动完成字符串的转换,你需要显式地提供正确的类型转换或者检查输入是否为字符串。例如:
```cpp
if (std::string(path).size() > 0) {
cv::String path_str(path.c_str());
}
if (std::string(path1).size() > 0) {
cv::String path1_str(path1.c_str());
}
```
这里假设`path`和`path1`是`std::string`类型的。如果它们不是,那么需要先将其转换成`std::string`再传递给`cv::String`构造函数。
相关问题
没有与参数列表匹配的 cv::String path_str2(str2); cv::String path_str3(str3);
在OpenCV库中,`cv::String` 类型通常用于处理字符串路径,它不是C++标准库中的内置类型,而是OpenCV自定义的一个字符数组类。当你试图像下面这样初始化 `cv::String`:
```cpp
cv::String path_str2(str2);
cv::String path_str3(str3);
```
这里假设 `str2` 和 `str3` 是普通的C++字符串 (`std::string`) 或 `const char*` 类型,但是直接将它们赋值给 `cv::String` 可能会出错,因为 `cv::String` 需要一个已经创建好的空字符串或者是一个已有的 `cv::String` 对象作为构造参数。
正确的做法应该是先创建 `cv::String` 的实例,然后传入对应的字符串:
```cpp
if (!str2.empty()) {
cv::String path_str2 = str2;
}
if (!str3.empty()) {
cv::String path_str3 = str3;
}
```
或者是使用 `cv::String` 的构造函数接受 `const char*`:
```cpp
cv::String path_str2 = cv::String(str2.c_str());
cv::String path_str3 = cv::String(str3.c_str());
```
如果 `str2` 或 `str3` 是 `cv::String` 类型,那么不需要额外转换:
```cpp
cv::String path_str2 = str2;
cv::String path_str3 = str3;
```
def identity_OCR_Video(pic_path): vid = cv2.VideoCapture(pic_path) while True: try: return_value, frame = vid.read() if return_value: cv2.imshow("result", frame) frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) image = Image.fromarray(frame) result = cv2.cvtColor(image, cv2.COLOR_RGB2BGR) code = pytesseract.image_to_string(frame,lang='chi_sim') print("识别该身份证号码是:" + str(code)) cv2.waitKey(100) else: raise ValueError("No image!") except: print() if __name__ == '__main__': pic_path="E:/sdxxky/train_data/0014.jpg" identity_OCR(pic_path) identity_OCR_Video(0) identity_OCR_Chine(pic_path) time2 = time.time() print(u'总共耗时:' + str(time2 - time1) + 's') 总耗时为什么没有输出
根据您提供的代码,可能是因为在计算总耗时的语句没有正确输出。您可以尝试将最后的输出语句改为:
```
print('总共耗时: %.2f s' % (time2 - time1))
```
这样可以确保输出结果是正确的。此外,您的代码中同时调用了 `identity_OCR`、`identity_OCR_Video` 和 `identity_OCR_Chine` 函数,但是 `identity_OCR_Chine` 函数没有在代码中实现,可能会导致错误。建议您检查一下代码中是否存在错误或遗漏的部分。
阅读全文