为什么openCV是;“封锁”;我的python脚本?

为什么openCV是;“封锁”;我的python脚本?,python,macos,opencv,visual-studio-code,virtualenv,Python,Macos,Opencv,Visual Studio Code,Virtualenv,所以我对python还是新手,我尝试使用一个脚本,在其他人编写的图像上创建bokeh效果。以下是存储库: 以下是作者提供的有关代码如何工作的更多信息: 请注意,我使用的是VSCode、macOS BigSur和Python 3.9 首先我为我的项目创建了一个文件夹,然后我创建了一个虚拟环境,它已被VsCode识别并合并到项目中(因此我有一个带有json文件的.VsCode文件夹),我创建了一个python文件,在其中粘贴了代码,并下载了虚拟环境中所需的包 我还尝试根据我在web上读到的内容在js

所以我对python还是新手,我尝试使用一个脚本,在其他人编写的图像上创建bokeh效果。以下是存储库:

以下是作者提供的有关代码如何工作的更多信息:

请注意,我使用的是VSCode、macOS BigSur和Python 3.9

首先我为我的项目创建了一个文件夹,然后我创建了一个虚拟环境,它已被VsCode识别并合并到项目中(因此我有一个带有json文件的.VsCode文件夹),我创建了一个python文件,在其中粘贴了代码,并下载了虚拟环境中所需的包

我还尝试根据我在web上读到的内容在json文件中添加不同的行,但没有成功

问题是代码一直运行到遇到使用
OpenCV
包的行,我没有任何回溯,但代码什么也不做。 这是我在候机楼的东西。

我试图在不同的地方使用print,并删除某些使用opencv的行,每次使用
opencv
或使用
Tracker\u HSV
时都会出现问题(如果我以前使用opencv删除了所有行),但我认为这是因为
Tracker\u HSV
使用
opencv

因此,可能是我在项目设置过程中出错了,或者
opencv
工作不正常,我不知道该怎么办。
(对不起,我的英语是法语。)

根据您提供的信息,对于“
opencv
”模块的使用,建议您尝试以下操作:

  • 请正确安装模块“”:
    pip安装opencv python

  • 请使用此处代码中图片的绝对路径:“
    img=cv.imread(“D:/…/Bokeh\u Demo/flower.jpg”)

  • 导入模块“
    cv2
    ”时,因为它包含名为“cv2”的其他文件(因此pylint在此报告了一些错误,但这并不影响代码的执行)。我们可以使用“
    从cv2导入cv2作为cv
    ”来区分它们

  • 运行:

    更新1:

    请检查模块“
    opencv
    ”是否已成功安装在当前选定的VSCode环境中:

    更多参考:

    更新2:


    您能否提供您所描述的问题的最小化复制?请详细描述您遇到的问题。我想我已经完全描述了它,根据我所做的不同测试,代码行似乎“阻止了我的代码”,当脚本遇到使用opencv包的行时,它什么也不做,但它不会停止。您需要具体说明哪些代码行“阻止”了您的脚本,当人们询问细节时,你需要提供细节,而不是自我声明你描述的是正确的。不是这样的。谢谢你的帮助,我试过你说的,但是没有用。我试图使用调试器查看它在哪里“停止”,并且程序在第一行“cv.namedWindow('mask',cv.WINDOW_NORMAL')之后不会继续。也许cv2在macOS Big Sur???@Mattéo Menager上被“阻止”-请检查模块“opencv”是否已成功安装在您当前选择的VSCode环境中,我已更新了我的答案,您可以参考它。是的,我尝试过,它已安装,我的输出与您完全相同。@Mattéo Menager-您尝试过使用其他模块吗?重新加载VSCode后会发生什么?是的,我已经尝试过了,但仍然存在相同的问题。
    # import cv2
    from cv2 import cv2 as cv 
    
    import numpy as np
    import Tracker_HSV as tr
    from PIL import Image
    import os
    
    # cv2.namedWindow('mask', cv2.WINDOW_NORMAL)
    cv.namedWindow('mask',cv.WINDOW_NORMAL)
    
    cv.resizeWindow('mask',(500,500))
    filename= 'flower.jpg'
    cwd = os.getcwd()
    name_file=os.path.splitext(filename)[0]
    
    path_save_temp=os.path.join(cwd,'Data')
    path_save_folder=os.path.join(path_save_temp,f'{name_file}_blur_data')
    if not os.path.exists(path_save_folder):
        os.makedirs(path_save_folder)
    
    
    img = cv.imread("D:/....../test_Bokeh/Bokeh_Demo/flower.jpg")
    blur = cv.GaussianBlur(img,(5,5),0)
    img_hsv=cv.cvtColor(img,cv.COLOR_BGR2HSV)
    
    file_save_blur= os.path.join(path_save_folder,'blur.png')
    im_blur = cv.GaussianBlur(img,(81,81),0)
    cv.imwrite(file_save_blur,im_blur)
    
    xs,ys,w,h = cv.selectROI('mask',img)
    crop_img=crop_img_true=crop_img_contour=img[ys:ys+h, xs:xs+w]
    
    if not crop_img_true.shape[0]> 1:
        crop_img_true=img
    
    x,y,z,a,b,c=(tr.tracker(crop_img_true))
    
    crop_img_true=cv.cvtColor(crop_img_true,cv.COLOR_BGR2HSV)
    
    file_save_mask_inrange= os.path.join(path_save_folder,'mask inRange.png')
    mask_inRange=cv.inRange(crop_img_true,(x,y,z),(a,b,c))
    cv.imwrite(file_save_mask_inrange,mask_inRange)
    
    
    _, threshold = cv.threshold(mask_inRange, 250, 255, cv.THRESH_BINARY)
    Gauss_threshold =cv.adaptiveThreshold(threshold,255,cv.ADAPTIVE_THRESH_GAUSSIAN_C,cv.THRESH_BINARY_INV,101,10)
    
    
    blank_space_black= np.zeros((crop_img_true.shape[0],crop_img_true.shape[1]),np.uint8)
    blank_space_black[:]=(0)
    
    _,contours,_ = cv.findContours(Gauss_threshold, cv.RETR_TREE, cv.CHAIN_APPROX_NONE)
    
    
    maxi=cv.contourArea(contours[0])
    c=[]
    
    for cnt in contours:
        if cv.contourArea(cnt)>=maxi:
            maxi=cv.contourArea(cnt)
    ##        print(cv2.contourArea(cnt))
            c= cnt
    
    file_save_contour= os.path.join(path_save_folder,'Contour.png')
    cv.drawContours(crop_img_contour, c, -1, (0, 255, 0), 5)
    cv.imwrite(file_save_contour,crop_img_contour)
    
    
    file_save_poly= os.path.join(path_save_folder,'mask fill poly.png')
    mask_poly=cv.fillConvexPoly(blank_space_black,c,(255,255,255))
    cv.imwrite(file_save_poly,mask_poly)
    
    crop_img_true=cv.cvtColor(crop_img_true,cv.COLOR_HSV2BGR)
    
    file_save_mask_bitwise= os.path.join(path_save_folder,'mask bitwise and.png')
    mask_bitwise_and = cv.bitwise_and(crop_img_true,crop_img_true,mask=mask_poly)
    cv.imwrite(file_save_mask_bitwise,mask_bitwise_and)
    
    im2= Image.open(file_save_mask_bitwise)
    im2=im2.convert('RGBA')
    
    datas=im2.getdata()
    newdata=[]
    
    for data in datas:
        if data[0]== 0 and data[1]== 0 and data[2]== 0:
            newdata.append((255,255,255,0))
        else:
            newdata.append(data)
    
    file_save_transparent= os.path.join(path_save_folder,'transparent.png')
    im2.putdata(newdata)
    im2.save(file_save_transparent)
    
    im_blur= Image.open(file_save_blur)
    
    file_save_final= os.path.join(path_save_folder,'final.png')
    im_blur.paste(im2,(xs,ys),im2)
    im_blur.save(file_save_final)
    
    im_final= Image.open(file_save_final)
    im_final.show('Final Result')
    
    cv.imshow('GaussianBlur',blur)
    
    cv.waitKey(0)
    cv.destroyAllWindows()