从网上抓取图像

# load logo data from logo.txt which include image http paths.

import sys
import os
import argparse
import time

from urllib.request import urlretrieve

def parse_arguments(argv):
    parser = argparse.ArgumentParser()
    parser.add_argument('--file_path', type=str, help='the txt file path', default='/opt/xxx/data/img_path.txt')
    parser.add_argument('--save_path', type=str, help='save path', default='/opt/xxx/data/test')

    return parser.parse_args(argv)


def main(args):
    with open(args.file_path, 'r', encoding='utf-8') as f:
        idx = 0
        for line in f.readlines():
            img_path = line.strip('\n')
            if img_path:
                print(img_path)
                for i in range(10):
                    try:
                        urlretrieve(img_path, os.path.join(args.save_path, '2021-07-27_'+ str(idx) + '.jpg'))
                    except Exception as e:
                        if i >= 9:
                            print('load faild')
                        else:
                            time.sleep(0.5)
                    else: 
                        time.sleep(0.1)
                        break
                idx = idx + 1


if __name__ == '__main__':
    main(parse_arguments(sys.argv[1:]))

参考资料
Python Requests 频繁请求网站时返回“[Errno 104] Connection reset by peer”错误的解决方法

在QT中,有多种抓取图像的方法,以下是一些常见的情况及对应的实现方式: #### 抓取桌面图像 可以使用 `QScreen` 的 `grabWindow` 方法来抓取桌面图像。示例代码如下: ```cpp #include <QApplication> #include <QScreen> #include <QPixmap> #include <QBuffer> // ... QScreen *screen_ = QApplication::primaryScreen(); QPixmap pic = screen_->grabWindow(0); QBuffer buffer(&result); buffer.open(QIODevice::WriteOnly); bool isok = pic.save(&buffer, "jpg"); ``` 上述代码通过 `QApplication::primaryScreen()` 获取主屏幕,然后调用 `grabWindow(0)` 方法抓取整个桌面,最后将抓取图像保存为 JPEG 格式 [^2]。 #### 从摄像头抓取图像 结合 OpenCV 可以实现从摄像头抓取图像。以下是相关代码示例: 在 `mainwindow.h` 中添加必要的头文件和信号槽等定义: ```cpp #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QPaintEvent> #include <QTimer> #include <QPainter> #include <QPixmap> #include <QLabel> #include <QImage> #include <QDebug> #include <opencv.hpp> #include "ui_mainwindow.h" using namespace cv; namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private slots: void on_OpenCameraBtn_clicked(); void getFrame(); void on_TakePicBtn_clicked(); void on_CloseCameraBtn_clicked(); private: Ui::MainWindow *ui; QImage *imag; CvCapture *capture; // highgui里提供的一个专门处理摄像头图像的结构体 IplImage *frame; // 摄像头每次抓取图像为一帧,使用该指针指向一帧图像的内存空间 QTimer *timer; // 定时器用于定时取帧 }; #endif // MAINWINDOW_H ``` 此代码定义了一个 `MainWindow` 类,包含了处理摄像头操作的信号槽和必要的成员变量,通过 OpenCV 捕获摄像头图像流,并进行处理 [^3]。 #### 在项目中结合摄像头进行目标检测并抓取图像 在涉及机械臂抓取的项目中,可通过 `Camera` 类和 `ObjectDetector` 类实现摄像头读取和目标检测,进而抓取图像。示例如下: ```cpp // 摄像头读取和目标检测 Camera 类(摄像头)、ObjectDetector 类(目标检测) 通过 OpenCV 轻松捕获摄像头图像流,并进行预处理(如图像缩放、颜色转换等) 目标检测算法:直接作为模块部署 ``` 该项目通过 `OpenCV` 捕获摄像头图像流,进行预处理后使用目标检测算法进行目标检测,实现图像抓取和处理 [^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值