Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Python 3中从对话框打开图像文件?

如何在Python 3中从对话框打开图像文件?
EN

Stack Overflow用户
提问于 2018-07-18 18:44:43
回答 1查看 1.8K关注 0票数 1

我试图创建一个简单的界面,用户可以从中选择图像作为输入。THen我正在使用numpy和opencv在图像上做事情。我使用了tkinter的askopenfilename()和easygui的fileopenbox。它们似乎不会返回图像。

我得到的错误是:TypeError: src is not a numpy array, neither a scalar

我的代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
import cv2 as cv
import easygui

face_cascade = cv.CascadeClassifier('face.xml')
def todo():
    img = easygui.fileopenbox()
    gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, 7, 7)
    for (x,y,w,h) in faces:
        cv.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
        roi_gray = gray[y:y+h, x:x+w]
        roi_color = img[y:y+h, x:x+w]


        cv.imshow('img',img)
        cv.waitKey(0)
        cv.destroyAllWindows()

todo()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-18 19:35:06

发生错误的原因是您正在传递要作为图像文件读取的Unicode对象。行img = easygui.fileopenbox()img作为Unicode 返回,而不是像预期的那样图像数组。

如何将其转换?

  • 首先将unicode转换为字符串。有一个名为unicodedata的库就是为了这个目的。(我已经在下面的代码中展示了如何使用它)
  • 接下来读取此字符串,并将结果图像文件存储为数组。

以下代码将帮助您解决问题

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
import cv2
import easygui
import unicodedata

path = 'C:/Users/Jackson/Desktop/Stack/face_detection/'
face_cascade = cv2.CascadeClassifier(path + 'haarcascade_frontalface_default.xml')

uni_img = easygui.fileopenbox()
img_path = unicodedata.normalize('NFKD', uni_img).encode('ascii','ignore')

img = cv2.imread(img_path, 1)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:
    cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
    roi_gray = gray[y:y+h, x:x+w]
    roi_color = img[y:y+h, x:x+w]


cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

更新:

我已经对您提供的代码进行了必要的修改。只需复制以下代码并执行即可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
import cv2 as cv
import easygui

face_cascade = cv.CascadeClassifier('face.xml')
def todo():

    #--- returns the Unicode ---
    uni_code = easygui.fileopenbox()

    #--- converting unicode to string ---
    img_path = unicodedata.normalize('NFKD', uni_code).encode('ascii','ignore')
    img = cv2.imread(img_path, 1)
    gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, 7, 7)
    for (x,y,w,h) in faces:
        cv.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
        roi_gray = gray[y:y+h, x:x+w]
        roi_color = img[y:y+h, x:x+w]


        cv.imshow('img',img)
        cv.waitKey(0)
        cv.destroyAllWindows()

todo()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51408987

复制
相关文章
二维图像的三维旋转
三维坐标系中,已知三个欧拉角alpha,beta,gamma,分别为绕x轴旋转alpha角度,绕y轴旋转beta角度,绕z轴旋转gamma角度。则旋转矩阵Rotation的求法如下: Mat Rot=Mat::eye(3,3, CV_32FC1); Rot.at<float>(0, 0) = cos(beta) * cos(gamma); Rot.at<float>(0, 1) = cos(beta) * sin(gamma); Rot.at<float>(0, 2) = -sin
一棹烟波
2018/01/12
2K0
二维图像的三维旋转
[学习笔记]三维数学(4)-物体的旋转
欧拉角 什么是欧拉角 用三个数去存储物体在x、y、z轴的旋转角度。 补充: 为了避免万向节死锁,y和z轴取值范围都是0~360°,x轴是-90°~90°。 x和z轴是旋转是相对于自身坐标轴的,y轴旋转永远是相对于世界坐标轴的。 优点 好理解,使用方便 只用三个数表示,占用空间少,在表示方位的数据结构中是占用最少的 缺点 万向节死锁 四元数 什么是四元数 Quaternion在3D图形学中表示旋转,由一个三维向量(X/Y/Z)和一个标量(W)组成。 旋转轴为V,
六月丶
2022/12/26
5090
二维图形旋转公式的推导
关于二维图形旋转可能在非常多计算机图形学相关的书籍上都会介绍,然而真正理解公式推导过程的却讲得不多。
全栈程序员站长
2022/07/07
5470
二维图形旋转公式的推导
【python刷题】二维数组的旋转
matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
西西嘛呦
2021/03/09
7390
亲测jupyter打不开浏览器
有粉丝给我说他们的jupyter不能自动打开浏览器,jupyter notebook输入回车后,不能跳转,把输出的链接复制粘贴到浏览器后,写的代码页不能运行。
川川菜鸟
2021/10/19
1.5K0
爱奇艺CDN运维平台实践
CDN的全称是Content Delivery Network,即内容分发网络。它是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。
肉眼品世界
2021/10/26
1.6K0
爱奇艺CDN运维平台实践
3维旋转矩阵推导与助记
旋转矩阵的应用范围比较广,是姿态变换,坐标变换等的基础。本篇先介绍旋转矩阵的推导过程与助记方法。
xxpcb
2020/08/11
2.2K0
3维旋转矩阵推导与助记
解决打不开SQL Server配置管理器的问题[通俗易懂]
最近被Sql Server搞得贼烦,下了俩次SQL SERVER,重装了一次系统,先对这次遇到的问题发一下感慨:深深地意识到权限的重要性了,一般计算机里面的软件都有不同的访问权限,普通用户(Users)、管理员(Administrators)、SYSTEM等等,以不同的身份去对这个软件进行操作时,就会有不同的访问权限,一般Administrator的权限是最大的
全栈程序员站长
2022/09/13
3.2K1
解决打不开SQL Server配置管理器的问题[通俗易懂]
3维旋转矩阵推导与助记-补充篇
如下图,xy坐标系中,有一向量OP,其坐标可表示为(x,y),该向量与X轴夹角为α。然后,坐标系绕原点逆时旋转了β角度,形成新的坐标系x'y',此时OP在新的坐标系中的坐标表示为(x',y'),根据几何关系,可以得到如下推导,最终得到绿色虚框的旋转矩阵。对比上篇文章的旋转矩阵,可以发现:本篇坐标系旋转的旋转矩阵与上篇向量旋转的旋转矩阵正好是转置的关系(实际上是逆矩阵,因为正交阵的逆矩阵与转置矩阵相同),因为这两种旋转本质上是相对运动,互为逆过程。
xxpcb
2020/08/18
1K0
3维旋转矩阵推导与助记-补充篇
旋转编码器原理「建议收藏」
旋转变压器(resolver)是一种电磁式传感器,又称同步分解器。它是一种测量角度用的小型交流电动机,用来测量旋转物体的转轴角位移和角速度,由定子和转子组成。其中定子绕组作为变压器的原边,接受励磁电压,励磁频率通常用400、3000及5000HZ等。转子绕组作为变压器的副边,通过电磁耦合得到感应电压。旋转变压器的工作原理和普通变压器基本相似,区别在于普通变压器的原边、副边绕组是相对固定的,所以输出电压和输入电压之比是常数,而旋转变压器的原边、副边绕组则随转子的角位移发生相对位置的改变,因而其输出电压的大小随转子角位移而发生变化,输出绕组的电压幅值与转子转角成正弦、余弦函数关系,或保持某一比例关系,或在一定转角范围内与转角成线性关系。旋转变压器在同步随动系统及数字随动系统中可用于传递转角或电信号;在解算装置中可作为函数的解算之用,故也称为解算器。
全栈程序员站长
2022/11/15
2.3K0
旋转编码器原理「建议收藏」
pycharm 打不开了_pycharm激活成功教程之后打不开
1:第一步:进入如下路径,找到cmd.exe,右键选择“以管理员身份运行”; 第二步:在打开的cmd窗口中,输入 netsh winsock reset,按回车键;第三步:重启电脑;第四步:重启后,双击pycharm图标就能打开了!
全栈程序员站长
2022/09/28
3.5K0
Linux系统打不开gedit文本编辑器
这种情况下一般虚拟机也没连上网(打开浏览器显示没网),打开虚拟机设置>选项>vnc连接,启用。具体参数设置可看链接(Vmware官网,将虚拟机配置为 VNC 服务器)如下:
全栈程序员站长
2022/09/18
3.8K0
Flash/Flex学习笔记(51):3维旋转与透视变换(PerspectiveProjection)
Flash/Flex学习笔记(49):3D基础 里已经介绍了3D透视的基本原理,不过如果每次都要利用象该文中那样写一堆代码,估计很多人不喜欢,事实上AS3的DisplayObject类已经内置了z坐标、rotationX、rotationY、rotationZ属性,再加上PerspectiveProjection类用于处理透视转换,基本上可以满足大多数的3D要求。 import flash.events.Event; import flash.display.Sprite; import flash.tex
菩提树下的杨过
2018/01/22
8100
Flash/Flex学习笔记(51):3维旋转与透视变换(PerspectiveProjection)
排错-Loadrunner录制打不开浏览器解决方法
采用自带的web测试站点http://127.0.0.1:1080/WebTours/,进行录制,结果发现录制时打不开ie浏览器
授客
2019/09/11
7910
排错-Loadrunner录制打不开浏览器解决方法
奇思妙想,动手 DIY 你的浏览器主页
下面给大家分享项目的完整制作过程和实现原理,最后教大家 一键上线自己的项目,快来动手 DIY 你的浏览器主页吧!
程序员鱼皮
2021/02/08
8190
CSS笔记(26)
transform:rotate3d(x,y,z,deg):沿着自定义轴旋转deg为角度(了解即可)
y191024
2022/09/20
3550
CSS笔记(26)
旋转目标检测 | SCRDet,适用于旋转、密集、小目标的检测器
论文标题:《SCRDet: Towards More Robust Detection for Small, Cluttered and Rotated Objects》
Justlovesmile
2022/09/02
1.3K0
旋转目标检测 | SCRDet,适用于旋转、密集、小目标的检测器
矩阵旋转的解决
今天做了一道 leetcode 关于矩阵旋转(rotate-image,点击可查看原题)的题目,自己写了一种解法(基于Python),网上也看到一些比较好的解决方式,借此做一个总结。
用户7685359
2020/08/22
1K0
Idea 突然打不开了
1、下载压缩包解压后得到jetbrains-agent.jar 2、启动IDEA,试用(Evaluate for free)进入IDE 3、
OPice
2020/02/13
6.4K0
点击加载更多

相似问题

JavaScript未在WKWebView中执行

10

Javascript未在HTML中运行

412

WKWebView未在设备上运行

11

第二个嵌入式Javascript未在HTML中运行

10

嵌入到HTML中的Javascript代码

29
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文