Page 1 of 1

在RV1103 Pico Plus 运行C++的可执行程序出现错误,求助。

Posted: 2024-06-14 7:17
by Ran_TNT
在RV1103 Pico Plus 运行C++的可执行程序的时候,在读取root下的jpg图片,使用的是opencv:

Code: Select all

cv::Mat image_init = cv::imread("A0.jpg"); // 读取原始图像
板子上跑的程序就显示this device is not whitelisted for jpeg decoder cvi (此设备未列入jpeg解码器cvi的白名单)3次,然后直接会被killed掉。

Re: 在RV1103 Pico Plus 运行C++的可执行程序出现错误,求助。

Posted: 2024-06-14 7:55
by richard_yuan
我猜是不是因为1103不支持硬件加速的JPEG解码, 你要不试试禁用硬件加速, 在代码里指定IMREAD_IGNORE_ORIENTATION。
cv::Mat img = cv::imread("A0.jpg", cv::IMREAD_IGNORE_ORIENTATION);

还有一种可能你的OpenCV或者设备驱动太旧了,需要升级一下!

Re: 在RV1103 Pico Plus 运行C++的可执行程序出现错误,求助。

Posted: 2024-06-17 1:56
by Ran_TNT
cv::IMREAD_IGNORE_ORIENTATION,这个代码在他这个官方提供的opencv-mobile-4.8.1-luckfox-pico.zip库里没有,用不了我opencv的版本用的是4.8的应该不至于吧。

Re: 在RV1103 Pico Plus 运行C++的可执行程序出现错误,求助。

Posted: 2024-06-17 2:24
by Crocodile
您好,是用opencv-mobile是作者专门为luckfox-pico 等资源受限的芯片裁剪优化过的opencv,打印this device is not whitelisted for jpeg decoder cvi是正常现象(在校验芯片类型和支持的硬件加速类型不匹配就会打印,opencv-mobile不止适配luckfox-pico这个平台),如果所有硬件加速类型都不支持(RV1106没有硬件解码功能)就会使用默认的软件解码方式,而添加cv::IMREAD_IGNORE_ORIENTATION的方式是在opencv主线上的用法,这个标注位可能在作者开发芯片硬件加速功能选择时删除了。
我使用代码测试过在luckfox-pico上是可以正常读取-处理-保存 jpeg格式文件的

Code: Select all

    cv::Mat image = cv::imread("A0.jpg"); // 读取原始图像
    cv::Point top_left(100, 100);
    cv::Point bottom_right(300, 300);
    cv::Scalar rectangle_color(255, 0, 0); // BGR格式
    int thickness = 2;
    cv::rectangle(image, top_left, bottom_right, rectangle_color, thickness);
    cv::imwrite("A1.jpg",image);
你可以参考进行测试