年轻程序员 2022-09-15 23:42 采纳率: 90.9%
浏览 24
已结题

OpenCV的操作,请指出错误并解释清楚原因

代码运行无报错,但是本来应该文件夹抽样20张,每一张图片巡线路线判断转弯情况并附上去噪后的图,每个三秒切换下一张图的输出和图片,但是运行后无报错,能抽样建立新文件夹,但是无相关输出和图片,求大家看一看,刚学python还是有很多不懂的地方,请大家能尽量通俗一点吧,代码如下:

import os,random,shutil,cv2,glob
import numpy as ny
def moveFile(file,tar): 
   #取图片的原始路径
    path=os.listdir(file)
    #自定义选取图片数目
    picknumber=20
    #随机选取picknumber数量的样本图片
    sample=random.sample(path,picknumber)
    for name in sample: 
           shutil.copy(file+name, tar+name)
if __name__=='__main__':
    #源图片文件夹路径
    file="D:/pingan/shiyan1/guidao/"
    #移动到新的文件夹路径
    tar="D:/pingan/shiyan1/chouyang/"
    for oneDir in os.listdir(file):
        # A的二级目录
        onefileDir=file+oneDir+"/"
        # B的二级目录
        onetarDir=tar+oneDir+"/"
        # 判断文件夹是否存在,不存在则创建
        if not os.path.exists(onefileDir):
            os.makedirs(onefileDir)
        if not os.path.exists(onetarDir):
            os.makedirs(onetarDir)
        moveFile(onefileDir,onetarDir)
    #表示能读取文件夹底下的所有文件
    file_path="D:/pingan/shiyan1/chouyang/left/*/"
    images_path=glob.glob(os.path.join(file_path+'*.png'))
    #遍历
    for i in images_path:
        if True:
            #图片处理
            tu=cv2.imread(i)
            #灰度化
            tu_grey=cv2.cvtColor(tu,cv2.COLOR_BGR2GRAY)
            #大津法二值化
            retval,er=cv2.threshold(tu_grey,0,255,cv2.THRESH_OTSU)
            #膨胀
            er=cv2.dilate(er,None,iterations=2)
            #腐蚀
            er=cv2.erode(er,None,iterations=6)
            #窗口大小自适应
            cv2.namedWindow("er",cv2.WINDOW_FREERATIO)
            #显示黑线
            cv2.imshow("er",er)
            #取出第400行的值
            line_400=er[400]
            try:
                #黑色点的数量
                count_black=ny.sum(line_400==0)
                #找出黑点位置
                place_black=ny.where(line_400==0)
                #防止报错
                if count_black==0:
                    count_black=1
                #找出黑线中心的位置
                center=(place_black[0][count_black-1]+place_black[0][0])/2
                #相对位置的比较
                direction=center-320
                #判断相对位置
                if direction>0:
                    print("右转")
                elif direction<0:
                    print("左转")
                else:
                    print("直行")
            except:
                pass
        cv2.waitKey(3000)
  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-16 08:41
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月24日
  • 已采纳回答 9月16日
  • 修改了问题 9月15日
  • 修改了问题 9月15日
  • 展开全部

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置