Search code examples
pythonpowershellopencvffmpegopenvino

OpenVINO cannot install OpenCV by executing with PowerShell in Windows 7 OS


I am trying to install openvino_2021.4.689 version with Windows 7 old computer.

I need to use OpenCV with my project, so I have to use PowerShell to execute ffmpeg-download.psl in opencv folder of openvino_2021.4.689 like this.

If I install my own OpenCV by pip install opencv-python in Command Prompt rather than install by OpenVINO's ffmpeg-download.psl file, my project with cv2 library will not work successfully.

Specifically, my YOLOv4 frame will not show without any error message, what I use cv2 to draw images cannot work.

But if I click ffmpeg-download.psl with right mouse button and select executed by PowerShell, I will get an error message as shown in the image. (Executed with system administrator.)

FATAL: Unable to write with elevated privileges: bin\opencv_videoio_ffmpeg45364.dll

Furthermore, this step always goes well in my Windows 10 or Windows 11 OS, it only happens in the Windows 7 outdated PC.

And the following is what in the ffmpeg-download.psl.

$url = "https://raw.githubusercontent.com/opencv/opencv_3rdparty/213fcd5d4897319a83207406036c4a5957fba010/ffmpeg/opencv_videoio_ffmpeg_64.dll"
$expected_md5 = "ac99f9767a83103c31709628af685924"
$output = "$PSScriptRoot\bin\opencv_videoio_ffmpeg453_64.dll"

Write-Output ("=" * 120)
try {
    Get-content -Path "$PSScriptRoot\etc/licenses\ffmpeg-readme.txt" -ErrorAction 'Stop'
} catch {
    Write-Output "Refer to OpenCV FFmpeg wrapper readme notes about library usage / licensing details."
}
Write-Output ("=" * 120)
Write-Output ""

if(![System.IO.File]::Exists($output)) {
    try {
        [io.file]::OpenWrite($output).close()
    } catch {
        Write-Warning "Unable to write: $output"
        if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
            Write-Warning "Launching with 'Administrator' elevated privileges..."
            Pause
            Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs
            exit
        } else {
            Write-Output "FATAL: Unable to write with elevated privileges: $output"
            Pause
            exit 1
        }
    }

    try {
        Write-Output ("Downloading: " + $output)
        Import-Module BitsTransfer
        $start_time = Get-Date
        Start-BitsTransfer -Source $url -Destination $output -ErrorAction 'Stop'
        Write-Output "Downloaded in $((Get-Date).Subtract($start_time).Seconds) seconds"
    } catch {
        $_ # Dump error
        try {
            Write-Output ("Downloading (second attempt): " + $output)
            $start_time = Get-Date
            Invoke-WebRequest -Uri $url -OutFile $output
            Write-Output "Downloaded in $((Get-Date).Subtract($start_time).Seconds) seconds"
        } catch {
            Write-Output ("Can't download file: " + $output)
            Write-Output ("URL: " + $url)
            Write-Output "You need to download this file manually. Stop"
            Pause
            Exit
        }
    }
} else {
    Write-Output ("File exists: " + $output)
    Write-Output ("Downloading is skipped. Remove this file and re-run this script to force downloading.")
}

if(![System.IO.File]::Exists($output)) {
    Write-Output ("Destination file not found: " + $output)
    Write-Output "Stop"
    Pause
    Exit
}

try {
    $hash = Get-FileHash $output -Algorithm MD5 -ErrorAction 'Stop'

    if($hash.Hash -eq $expected_md5) {
        Write-Output "MD5 check passed"
    } else {
        Write-Output ("MD5     : " + $hash.Hash.toLower())
        Write-Output ("Expected: " + $expected_md5)
        Write-Output "MD5 hash mismatch"
    }
} catch {
    $_ # Dump error
    Write-Output "Can't check MD5 hash (requires PowerShell 4+)"
}
Pause
Write-Output "Exit"

Solution

  • The validated and supported Operating System for Windows by Intel® Distribution of OpenVINO™ Toolkit is Windows 10, 64-bit. Using older Windows version might contribute to unexpected issues.

    If only looking on your current encountered error, it might be due to Windows PowerShell compatibility version. As it is mentioned in the ffmpeg-download.psl, which requires PowerShell 4+. While Windows 7 installed with the default version, Windows PowerShell 2.0.