opencv读取文件路径

一、opencv读取文件路径

主要解决:

  1. 针对中文路径
  2. 出现如下问题:OpenCV(4.2.0) /io/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.emp

二、使用

代码如下(示例):

def cv_imread(file_path):
    # 读取中文路径图片
    cv_img = cv2.imdecode(np.fromfile(file_path, dtype=np.uint8), -1)
    if cv_img.shape[-1] == 4:
        cv_img = cv2.cvtColor(cv_img, cv2.COLOR_RGBA2RGB)
    return cv_img
### 如何在 Qt 中使用 OpenCV 获取文件路径 要在 Qt 中集成 OpenCV 并实现文件路径获取的功能,可以利用 Qt 提供的 `QFileDialog` 类来打开一个对话框让用户选择文件,并返回所选文件的路径。随后可以通过该路径加载图像或其他媒体资源并传递给 OpenCV 进行进一步处理。 以下是具体方法和示例代码: #### 使用 QFileDialog 获取文件路径 Qt 的 `QFileDialog::getOpenFileName()` 方法允许用户从系统中选择文件,并返回其绝对路径字符串[^1]。此函数通常用于构建图形界面中的“打开文件”按钮逻辑。 ```cpp #include <QApplication> #include <QPushButton> #include <QVBoxLayout> #include <QLabel> #include <QFileDialog> int main(int argc, char *argv[]) { QApplication app(argc, argv); QWidget window; QVBoxLayout layout(&window); QPushButton button("Select Image", &window); QLabel label("Selected File Path:", &window); QObject::connect(&button, &QPushButton::clicked, [&label]() { QString filePath = QFileDialog::getOpenFileName(nullptr, tr("Open Image"), "", tr("Image Files (*.png *.jpg *.bmp)")); if (!filePath.isEmpty()) { label.setText(tr("Selected File Path: %1").arg(filePath)); } }); layout.addWidget(&button); layout.addWidget(&label); window.resize(300, 150); window.show(); return app.exec(); } ``` 上述程序创建了一个简单的 GUI 应用程序,在其中有一个按钮点击事件触发器会弹出文件选择窗口;当用户选择了某个图片类型的文件之后,它的完整路径会被显示出来[^2]。 #### 将文件路径交给 OpenCV 处理 一旦获得了有效的文件路径,就可以将其作为参数传入 cv::imread 函数读取图像数据。下面展示了一段扩展上面例子的小片段,它展示了如何结合 OpenCV 来载入选定的图像并显示在一个新窗口里: ```cpp #include <opencv2/opencv.hpp> // 假设我们已经有了QString形式的文件路径变量叫做'filePath' cv::Mat img = cv::imread(filePath.toStdString(), cv::IMREAD_COLOR); // 加载彩色模式下的图像 if (img.empty()){ qDebug() << "Could not load image!"; } else{ cv::imshow("Loaded Image", img); cv::waitKey(); // 等待按键关闭窗口 } ``` 以上两部分结合起来就构成了完整的解决方案——即先由 Qt 负责交互操作获得所需资源的位置信息,再交予 OpenCV 执行具体的计算任务[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值