• [问题求助] 【python版atlas_utils】AclImage类型如何保存到本地?如何转换成opencv的mat类型
    【功能模块】python版本的公共库atlas_utils中, 读取的图片都是AclImage类型,请问此类型如何保存到本地?此类型如何转换成opencv的OutputArray类型?
  • [问题求助] 编译样例 yolov3的时候出错
    【功能模块】编译样例yolov3的时候报错,报错如下这是提示我需要下载opencv吗,可是我下载安装完opencv后依旧有这个错误,这是需要下载某个特定版本的opencv吗,异或是存在别的错误在论坛中看到https://bbs.huaweicloud.com/forum/thread-99625-1-1.html这篇帖子有一样的问题,但是该贴并没有解决我的问题,对于该样例我并没有并没有更改任何文件路径
  • [开发环境] 如何把搜索路径写入/etc/ld.so.conf.d/opencv.conf
    【功能模块】Modelart推理作业【操作步骤&问题现象】1、psenet网络推理需要安装C++版本的opencv和编译C++文件,与此同时需要在/etc/ld.so.conf.d目录下创建opencv.conf文件t添加opencv路径2、本人采用操作:os.system('cd /etc/ld.so.conf.d&&sudo echo /usr/local/lib64 > opencv.conf&&ldconfig')【截图信息】【报错信息】(可选,上传日志内容或者附件)sh : opencv.conf: permission denied256
  • cloudeIDE无法使用opencv
    使用opencv报错,尝试安装依赖却报错IniParser: Can't open fileError: There are no enabled repos求方法
  • [问题求助] 安装opencv执行make -j8报错
    按照https://gitee.com/ascend/samples/blob/master/cplusplus/environment/opencv_install/README_200DK_CN.md这个方法进行安装,前面都是正常执行,执行make -j8 到92%时出现两处错误,请专家帮忙指点一下,谢谢了!往上翻发现是以下错误。
  • [问题求助] 安装ffmpeg+opencv 的相关依赖
    参考https://gitee.com/ascend/samples/blob/master/cplusplus/environment/opencv_install/README_200DK_CN.md安装ffmpeg+opencv,第一步的安装依赖包出现如下错误,然后根据https://bbs.huaweicloud.com/forum/thread-74123-1-1.html进行配置还是出现如下错误。请专家帮忙指导一下,谢谢!
  • [软件平台] MDS配置和部署OpenCV
    【功能模块】【操作步骤&问题现象】1、MDS C++环境无法使用opencv库,应该怎么将openCV部署到MDS上【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [问题求助] atlas500 编译opencv老问题依然存在
    tare@tedu:~/opencv-4.1.1/build$ cmake -DCMAKE_INSTALL_PREFIX=/home/tarena/opencv -DCMAKE_TOOLCHAIN_FILE=/home/tarena/Euler.cmake -DWITH_WEBP=OFF -DBUILD_opencv_world=ON 出现错误:CMake Error: The source directory "/home/tare/opencv-4.1.1/build" does not appear to contain CMakeLists.txt. 根据要求把主目录下CMakeLists.txt 放入build中,再进行编译出现错误为: CMake Error at CMakeLists.txt:11 (message): FATAL: In-source builds are not allowed. You should create a separate directory for build files.根据百度查找,删掉bulid文件夹下的CMakeCache.txt,再一次进行编译,依然报错为:CMake Error at CMakeLists.txt:11 (message): FATAL: In-source builds are not allowed. You should create a separate directory for build files.而且会在build下生成CMakeCache.txt文件。并且我也尝试过编译opencv-3.4.6,同样的问题。https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=123012
  • [问题求助] 【atlas200 DK产品】安装ffmpeg+opencv
    【功能模块】【操作步骤&问题现象】1、执行 make -j8 出现如下图问题 且一直再循环2、执行 make install 也出现上述问题3、在 vim /etc/ld.so.conf.d/ffmpeg.conf  打开是空的在执行cp /home/HwHiAiUser/ascend_ddk/arm/lib/pkgconfig/* /usr/share/pkgconfig 时没找到该路径下的pkgconfig环境变量已配置export LD_LIBRARY_PATH=/home/HwHiAiUser/ascend_ddk/arm/lib:/home/HwHiAiUser/Ascend/acllib/lib64:$LD_LIBRARY_PATHexport PYTHONPATH=/home/HwHiAiUser/Ascend/pyACL/python/site-packages/acl:$PYTHONPATH感谢【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [其他] 用C++ 和OpenCV 实现视频目标检测(YOLOv4模型)
    据说,现在很多小区都上线了AI抓拍高空抛物的黑科技,可以自动分析抛物轨迹,用来协助检查很多不文明行为。你想不想知道,这类检测视频中目标物的黑科技是怎么实现的呢?虽然不同场景下的目标检测模型训练不同,但底层技术都是一样的。思路:读取视频流,载入模型,执行推理,找出所有目标及其位置,最后绘制检测结果。步骤略。总结:YOLOv4的检测精度优于YOLOv4-tiny。经GPU 加速后,模型推理速度明显提升,YOLOv4 的推理速度提高了约10倍,YOLOv4-tiny的推理速度提高了约4.8倍。
  • [问题求助] Atlas500 编译 在虚拟机linux上编译opencv3.4.6出现的问题
    按照《aarch64 架构 linux 服务器软件编译与部署指南》进行tare@tedu:~/opencv-3.4.6/build$ cmake --versioncmake version 3.19.8CMake suite maintained and supported by Kitware (kitware.com/cmake).tare@tedu:~/opencv-3.4.6/build$ cmake  -DCMAKE_INSTALL_PREFIX=/home/tarena/opencv -DCMAKE_TOOLCHAIN_FILE=/home/tarena/Euler.cmake  -DWITH_WEBP=OFF  -DBUILD_opencv_world=ON出现错误:根据要求把CMakeLists.txt 放入build中,再次编译出现?Atlas500的版本在虚拟机上安装的希望能帮忙解决,非常感谢!!!!
  • [问题求助] 【200dk】【python3.7】 opencv-python>=4.1.2 编译进度不动
    【功能模块】git clone https://github.com/ultralytics/yolov5/releasescd releasespip3.7.5  install requirementx.txt【操作步骤&问题现象】1、HwHiAiUser@davinci-mini:~/Yolov5_for_Pytorch/yolov5$ pip3.7.5 install -r requirements.txt Looking in indexes: http://mirrors.aliyun.com/pypi/simple/Collecting matplotlib>=3.2.2 (from -r requirements.txt (line 4))  Downloading http://mirrors.aliyun.com/pypi/packages/84/61/28711c7773a3a47c7f798cafc219968aab78d260c0d674696a077432bbd4/matplotlib-3.4.1.tar.gz (37.3MB)     |████████████████████████████████| 37.3MB 4.9MB/s Requirement already satisfied: numpy>=1.18.5 in /home/HwHiAiUser/.local/lib/python3.7/site-packages (from -r requirements.txt (line 5)) (1.19.4)Collecting opencv-python>=4.1.2 (from -r requirements.txt (line 6))  Downloading http://mirrors.aliyun.com/pypi/packages/bb/08/9dbc183a3ac6baa95fabf749ddb531bd26256edfff5b6c2195eca26258e9/opencv-python-4.5.1.48.tar.gz (88.3MB)     |████████████████████████████████| 88.3MB 5.6MB/s   Installing build dependencies ... |2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [问题求助] 【SDC产品】如何使用opencv 对yuv视频帧进行处理
       请问在代码中得到  sdc_yuv_data_s stSdcYuvData 后,应该怎么转成opencv 中的 Mat 了? 
  • [问题求助] 【Atlas200DK产品】【摄像头功能】通过官方camera.py脚本读取的数据流如何转换才能使用opencv处理
    【功能模块】【操作步骤&问题现象】1、通过官方camera.py脚本读取的数据流如何转换才能使用opencv处理2、读出的数据显示为atlas_utils.acl_image.AclImage object at 0xfffed05ed588【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [其他] OpenCV4.5.1 | 使用一行代码将图像匹配性能提高14%
    OpenCV发行版4.5.1包含了BEBLID,这是一个新的本地特性描述符。opencv4.5.1中最令人兴奋的特性之一是BEBLID(Boosted effective Binary Local Image Descriptor),它是一种新的描述符,能够在减少执行时间的同时提高图像匹配精度!本文将向你展示一个具体的例子,所有源代码都存储在此GitHub存储库中:https://github.com/iago-suarez/beblid-opencv-demo/blob/main/demo.ipynb在这个例子中,我们将通过一个视角的改变来匹配这两个图像:首先,确保安装了正确版本的OpenCV。在你喜爱的环境中,你可以使用以下工具安装和检查OpenCV Contrib版本:pip install "opencv-contrib-python>=4.5.1"python>>> import cv2 as cv>>> print(f"OpenCV Version: {cv.__version__}")OpenCV Version: 4.5.1在Python中加载这两个图像所需的代码是:import cv2 as cv# Load grayscale imagesimg1 = cv.imread("graf1.png", cv.IMREAD_GRAYSCALE)img2 = cv.imread("graf3.png", cv.IMREAD_GRAYSCALE)if img1 is None or img2 is None:    print('Could not open or find the images!')    exit(0)为了评估我们的图像匹配程序,我们需要在两幅图像之间进行正确的几何变换。这是一个称为单应性的3x3矩阵,当我们将第一个图像中的一个点(在齐次坐标中)相乘时,它将返回第二个图像中该点的坐标。让我们加载它:# Load homography (geometric transformation between image)fs = cv.FileStorage("H1to3p.xml", cv.FILE_STORAGE_READ)homography = fs.getFirstTopLevelNode().mat()print(f"Homography from img1 to img2:\n{homography}")下一步是检测图像中容易在其他图像中找到的部分:局部图像特征。在这个例子中,我们将用一个快速可靠的探测器ORB来检测角点。ORB通过比较不同尺度下的角点来检测强角点,并利用FAST或Harris响应来选择最佳的角点,同时它还使用局部分块的一阶矩来确定每个角点的方向。允许在每个图像中检测最多10000个角点:detector = cv.ORB_create(10000)kpts1 = detector.detect(img1, None)kpts2 = detector.detect(img2, None)在下图中,你可以看到用绿点标记的检测响应最强的500个角点特征:现在使用该方式来表示这些关键点,我们可以在另一幅图中找到它们,这一步称为描述,因为每个角点附近的局部分块中的纹理由来自图像上不同操作的数字向量表示(即描述)。有很多描述符,但如果我们想要一些准确的东西,即使在移动电话或低功耗设备上也能实时运行,OpenCV有两种重要的方法:ORB(Oriented FAST and Rotated BRIEF):一个经典的替代品,已经有10年的历史了,效果相当不错。BEBLID(Boosted effective Binary Local Image Descriptor):2020年推出的一种新的描述符,在多个任务中被证明可以提高ORB。由于BEBLID适用于多种检测方法,因此必须将ORB关键点的比例设置为0.75~1。# Comment or uncomment to use ORB or BEBLIDdescriptor = cv.xfeatures2d.BEBLID_create(0.75)# descriptor = cv.ORB_create()kpts1, desc1 = descriptor.compute(img1, kpts1)kpts2, desc2 = descriptor.compute(img2, kpts2)现在是时候匹配两幅图像的描述符来建立对应关系了。让我们使用暴力算法,基本上比较第一个图像中的每个描述符与第二个图像中的所有描述符。当我们处理二进制描述符时,比较是用汉明距离来完成的,也就是说,计算每对描述符之间不同的位数。这里还使用了一个称为比率测试的小技巧,它不仅确保描述符1和2彼此相似,而且没有其他描述符像2那样接近1。matcher = cv.DescriptorMatcher_create(cv.DescriptorMatcher_BRUTEFORCE_HAMMING)nn_matches = matcher.knnMatch(desc1, desc2, 2)matched1 = []matched2 = []nn_match_ratio = 0.8  # Nearest neighbor matching ratiofor m, n in nn_matches:    if m.distance < nn_match_ratio * n.distance:        matched1.append(kpts1[m.queryIdx])        matched2.append(kpts2[m.trainIdx])因为我们知道正确的几何变换,所以让我们检查有多少匹配是正确的(inliers)。如果图2中的点和从图1投射到图2的点距离小于2.5像素,我们将认为它是有效的。inliers1 = []inliers2 = []good_matches = []inlier_threshold = 2.5  # Distance threshold to identify inliers with homography checkfor i, m in enumerate(matched1):    # Create the homogeneous point    col = np.ones((3, 1), dtype=np.float64)    col[0:2, 0] = m.pt    # Project from image 1 to image 2    col = np.dot(homography, col)    col /= col[2, 0]    # Calculate euclidean distance    dist = sqrt(pow(col[0, 0] - matched2[i].pt[0], 2) + pow(col[1, 0] - matched2[i].pt[1], 2))    if dist < inlier_threshold:        good_matches.append(cv.DMatch(len(inliers1), len(inliers2), 0))        inliers1.append(matched1[i])        inliers2.append(matched2[i])现在我们在inliers1和inliers2变量中具有正确的匹配项,我们可以使用cv.drawMatches对结果进行定性评估。每个对应点都可以帮助我们完成更高层次的任务,例如单应性估计,透视n点,平面跟踪,实时姿态估计或图像拼接。单应性估计:https://docs.opencv.org/4.5.1/d9/d0c/group__calib3d.html#ga4abc2ece9fab9398f2e560d53c8c9780透视n点:https://docs.opencv.org/4.5.1/d9/d0c/group__calib3d.html#ga549c2075fac14829ff4a58bc931c033d平面跟踪:https://docs.opencv.org/4.5.1/dc/d16/tutorial_akaze_tracking.html实时姿态估计:https://docs.opencv.org/4.5.1/dc/d2c/tutorial_real_time_pose.html图像拼接:https://docs.opencv.org/4.5.1/df/d8c/group__stitching__match.htmlres = np.empty((max(img1.shape[0], img2.shape[0]), img1.shape[1] + img2.shape[1], 3), dtype=np.uint8)cv.drawMatches(img1, inliers1, img2, inliers2, good_matches, res)plt.figure(figsize=(15, 5))plt.imshow(res)由于很难比较这种定性的结果,所以我们需要一些定量的评价指标,最能反映描述符可靠性的指标是inliers的百分比:Matching Results (BEBLID)*******************************# Keypoints 1:                          9105# Keypoints 2:                          9927# Matches:                              660# Inliers:                              512# Percentage of Inliers:                77.57%使用BEBLID描述符可以获得77.57%的inliers。如果我们在description单元格中注释BEBLID并取消注释ORB descriptor,结果将下降到63.20%:# Comment or uncomment to use ORB or BEBLID# descriptor = cv.xfeatures2d.BEBLID_create(0.75)descriptor = cv.ORB_create()kpts1, desc1 = descriptor.compute(img1, kpts1)kpts2, desc2 = descriptor.compute(img2, kpts2)Matching Results (ORB)*******************************# Keypoints 1:                          9105# Keypoints 2:                          9927# Matches:                              780# Inliers:                              493# Percentage of Inliers:                63.20%总之,用BEBLID替换ORB描述符只需一行代码,就可以将两幅图像的匹配结果提高14%,这对需要局部特征匹配才能工作的更高级别任务有很大收益。