视觉模型是一类基于人工智能与计算机视觉技术构建的算法模型,主要用于对图像、视频等视觉类数据进行识别、解析、理解与处理。
视觉模型通过学习海量视觉数据中的特征、结构与规律,能够自动完成图像分类、目标检测、图像分割、人脸识别、场景理解等一系列视觉相关任务,广泛应用于安防监控、自动驾驶、医疗影像分析、内容审核、智能终端交互等多个领域,是实现机器具备视觉感知与认知能力的核心技术载体。
Ollama 支持视觉模型,通过向视觉模型传递图像和文本,模型就能对其看到的内容进行描述、分类和回答相关问题。下面看看 Ollama 如何运行视觉模型:
先准备一张图片:

假如图片放在桌面,进入 DOS 窗口,切换到桌面,直接在命令行执行一次与视觉模型对话,如下:
ollama run gemma3 ./code.png whats in this image?运行效果如下图:

注意,执行上面命令后,由于本地没有下载 gemma3 模型,因此需要下载模型,下载后就可以运行模型了。
提供一个 images 数组。SDK 接受文件路径、URL 或原始字节,而 REST API 则需要 base64 编码的图像数据。
注意,下面步骤请在 Linux 环境进行,Windows 环境执行会报错:
# 1. 下载一张示例图片
curl -L -o test.jpg "https://upload.wikimedia.org/wikipedia/commons/3/3a/Cat03.jpg"
# 2. 对图像进行编码
IMG=$(base64 < test.jpg | tr -d '\n')
# 3. 将其发送至Ollama
curl -X POST http://localhost:11434/api/chat \
-H "Content-Type: application/json" \
-d '{
"model": "gemma3",
"messages": [{
"role": "user",
"content": "What is in this image?",
"images": ["'"$IMG"'"]
}],
"stream": false
}'记得通过 pip install ollama 安装依赖库:
from ollama import chat
# from pathlib import Path
# 传入图片的路径
path = r'C:\Users\Administrator\Desktop\code.png'
# 你也可以传入经过base64编码的图片数据
# img = base64.b64encode(Path(path).read_bytes()).decode()
# 或者原始字节数据
# img = Path(path).read_bytes()
response = chat(
model='gemma3',
messages=[
{
'role': 'user',
'content': '这张图片里有什么?请简洁描述。',
'images': [path],
}
],
)
print(response)运行结果:
$ python .\ollama_example10.py
model='gemma3' created_at='2026-04-09T03:17:34.6674915Z' done=True done_reason='stop' total_duration=5347346300
load_duration=276552300 prompt_eval_count=278 prompt_eval_duration=109138000 eval_count=41 eval_duration=4849456000
message=Message(role='assistant', content='这张图片展示了一个简单的 C 程序,它使用 `printf` 函数在屏幕上打印 "Hello, World!" 字符串。
这是一个常见的入门程序,用来测试编译器和运行环境是否正常。', thinking=None, images=None, tool_name=None, tool_calls=None) logprobs=None记得通过 npm install ollama 安装依赖库:
import ollama from 'ollama'
// 图片URL地址
const imagePath = '/absolute/path/to/image.jpg'
// 调用模型
const response = await ollama.chat({
model: 'gemma3',
messages: [
{ role: 'user', content: '这张图片里有什么?', images: [imagePath] }
],
stream: false,
})
console.log(response.message.content)运行结果:
$ node .\ollama_example10.js
{
model: 'gemma3',
created_at: '2026-04-09T03:19:37.2727789Z',
message: {
role: 'assistant',
content: '这张图片显示了一个简单的C语言程序,它打印出“Hello, World!”。\n' +
'\n' +
'具体来说,代码如下:\n' +
'\n' +
'* **`#include <stdio.h>`**: 这行代码包含了标准输入/输出库的头文件,它提供了诸如 `printf` 之类的函数,用于控制输出。\n' +
'* **`int main() { ... }`**: 这是C程序的入口点,所有代码都必须在 `main()` 函数内部。\n' +
'* **`printf("Hello, World!\\n");`**: 这行代码使用 `printf` 函数在屏幕上打印出字符串“Hello, World!”。 `\\n` 是一个换行符,确保输出后光标移动到下一行。\n' +
'* **`return 0;`**: 这行代码指示程序正常完成。 `0` 通常表示成功。\n' +
'\n' +
'这个程序是C语言学习的基础,它展示了如何使用 `printf` 函数向控制台输出文本。'
},
done: true,
done_reason: 'stop',
total_duration: 26779286500,
load_duration: 248740200,
prompt_eval_count: 274,
prompt_eval_duration: 272540200,
eval_count: 206,
eval_duration: 25998279700
}注意:运行模型可能有点慢,请耐心等待……