在网上看到了很多解决方法,但都i行不通,试过在cv2.imread()读取图片末端加0,也没用

想尝试如何将三通道的图片改成单通道的,但都无济于事,可能是我的方法不对,下面附上我的代码

import cv2
import numpy as npdef show(img):cv2.imshow('xx', img)cv2.waitKey(0)cv2.destroyAllWindows()def sort_conts(conts):boxes = [cv2.boundingRect(c) for c in conts]#绘制矩形边界框a= sorted(zip(conts, boxes), key=lambda x: x[1])return conts, boxes
#读取模板,并灰度值
img = cv2.imread('E:\opencv2\picture/OIP.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#二值化阈值
_,ref = cv2.threshold(gray,10,255,cv2.THRESH_BINARY_INV)
show(ref)#轮廓检测,画出轮廓
refCnts, _ =cv2.findContours(ref.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img, refCnts, -1, (0,0,255), 2)
show(img)#轮廓排序
refCnts, _ = sort_conts(refCnts)#模板切割
digits= {}#建立一个字典类型,i是轮廓索引,c是轮廓----字典类型:每个索引号对应一个索引值
for i, c in enumerate(refCnts):#i是轮廓索引,c是对应轮廓,则完成了对检测出来的轮廓进行了排序x, y, w, h = cv2.boundingRect(c)#得到没一个外接矩形的左上坐标点以及长度、宽度roi=ref[y:y+h,x:x+w]#每个数字的外接矩形的尺寸#print(w, h)roi = cv2.resize(roi, (17, 28))  # 重置外接矩形的尺寸至合适大小digits[i] = roi  # 每个数字对应一个模板show(roi)image = cv2.imread('E:\opencv2\picture/AC.png')
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
show(gray)#初始化卷积核
rectkernel = cv2.getStructuringElement(cv2.MORPH_RECT,(11,9))#卷积核形象着闭合操作的是否完整
sqkernel = cv2.getStructuringElement(cv2.MORPH_RECT,(2,2))#礼帽操作,过滤,突出明亮部分,以便后面的读取轮廓
result = cv2.morphologyEx(image, cv2.MORPH_TOPHAT, rectkernel)
show(result)
#Sobel算子对x方向进行检测
gradX = cv2.Sobel(result, ddepth=cv2.CV_32F,dx=1, dy=0,ksize=-1)   # -1 相当于3*3
#加绝对值,黑白边界均能看到
gradX = np.absolute(gradX)
(minVAl, maxVal) = (np.min(gradX), np.max(gradX))
gradX = (255*((gradX - minVAl) / (maxVal -minVAl)))
gradX= gradX.astype(np.float32) / 255
gradX= (gradX * 255).astype(np.uint8)show(gradX)#闭操作
gradX = cv2.morphologyEx(gradX,cv2.MORPH_CLOSE,rectkernel)#再次闭操作,使空白补满
thresh=cv2.morphologyEx(gradX.copy(),cv2.MORPH_CLOSE,sqkernel)
show(thresh)#轮廓检测
cnts, _ =cv2.findContours(thresh.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)cut_image = image.copy()
Cnts = cnts.copy()
cut_image = cv2.drawContours(cut_image, Cnts, -1, (0,0,255), 2)
show(cut_image)

写到轮廓检测这里就出现问题了,显示error: (-210:Unsupported format or combination of formats) [Start]FindContours supports only CV_8UC1 images when mode != CV_RETR_FLOODFILL otherwise supports CV_32SC1 images only in function    所以没有接着往下写,附上出现的问题的图片

附上运行效果图

下面附上我在imread后面加上0的代码,加0后我就把gray灰度的代码去掉了

import cv2
import numpy as npdef show(img):cv2.imshow('xx', img)cv2.waitKey(0)cv2.destroyAllWindows()def sort_conts(conts):boxes = [cv2.boundingRect(c) for c in conts]#绘制矩形边界框a= sorted(zip(conts, boxes), key=lambda x: x[1])return conts, boxes
#读取模板,并灰度值
img = cv2.imread('E:\opencv2\picture/OIP.jpg',0)#二值化阈值
_,ref = cv2.threshold(img,10,255,cv2.THRESH_BINARY_INV)
show(ref)#轮廓检测,画出轮廓
refCnts, _ =cv2.findContours(ref.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img, refCnts, -1, (0,0,255), 2)
show(img)#轮廓排序
refCnts, _ = sort_conts(refCnts)#模板切割
digits= {}#建立一个字典类型,i是轮廓索引,c是轮廓----字典类型:每个索引号对应一个索引值
for i, c in enumerate(refCnts):#i是轮廓索引,c是对应轮廓,则完成了对检测出来的轮廓进行了排序x, y, w, h = cv2.boundingRect(c)#得到没一个外接矩形的左上坐标点以及长度、宽度roi=ref[y:y+h,x:x+w]#每个数字的外接矩形的尺寸#print(w, h)roi = cv2.resize(roi, (17, 28))  # 重置外接矩形的尺寸至合适大小digits[i] = roi  # 每个数字对应一个模板show(roi)image = cv2.imread('E:\opencv2\picture/AC.png',0)show(image)#初始化卷积核
rectkernel = cv2.getStructuringElement(cv2.MORPH_RECT,(11,9))#卷积核形象着闭合操作的是否完整
sqkernel = cv2.getStructuringElement(cv2.MORPH_RECT,(2,2))#礼帽操作,过滤,突出明亮部分,以便后面的读取轮廓
result = cv2.morphologyEx(image.copy(), cv2.MORPH_TOPHAT, rectkernel)
show(result)
#Sobel算子对x方向进行检测
gradX = cv2.Sobel(result, ddepth=cv2.CV_32F,dx=1, dy=0,ksize=-1)   # -1 相当于3*3
#加绝对值,黑白边界均能看到
gradX = np.absolute(gradX)
(minVAl, maxVal) = (np.min(gradX), np.max(gradX))
gradX = (255*((gradX - minVAl) / (maxVal -minVAl)))
gradX= gradX.astype(np.float32) / 255
gradX= (gradX * 255).astype(np.uint8)
show(gradX)#闭操作
gradX = cv2.morphologyEx(gradX,cv2.MORPH_CLOSE,rectkernel)#再次闭操作,使空白补满
thresh=cv2.morphologyEx(gradX.copy(),cv2.MORPH_CLOSE,sqkernel)
show(thresh)#轮廓检测
cnts, _ =cv2.findContours(thresh.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)cut_image = image.copy()
Cnts = cnts.copy()
cut_image = cv2.drawContours(cut_image, Cnts, -1, (0,0,255), 2)
show(cut_image)

附上运行效果,我有点懵逼,画出来的轮廓可怪了

  

求大佬帮忙解决,小白一个求求了

opencv信用卡检测遇到了(-210:Unsupported format or combination of formats) [Start]FindContours supports only相关推荐

  1. 解决error: (-210:Unsupported format or combination of formats) [Start]FindContours supports only CV_8U

    原程序: # -*- coding:utf-8 -*- # 创建时间:2019年7月29日 # 使用轮廓匹配识别出目标物import cv2 import numpy as np# 不同特征的形状匹配 ...

  2. OpenCV Error: Unsupported format or combination of formats (Unsupported combination of input and out

    OpenCV Error: Unsupported format or combination of formats (Unsupported combination of input and out ...

  3. Unsupported format or combination of formats) Failed to parse onnx model

    Unsupported format or combination of formats) Failed to parse onnx model 加载模型时报错: cv2.dnn.readNetFro ...

  4. OpenCV行人检测

    注:本文翻译自:Pedestrian Detection OpenCV. 你知道OpenCV里面已经内置的行人检测方法吗?在OpenCV里面,有一个预先训练好了的HOG+线性SVM模型,能够对图像和视 ...

  5. OpenCV与图像处理学习十七——OpenCV人脸检测(含代码)

    OpenCV与图像处理学习十七--OpenCV人脸检测(含代码) 一.人脸识别概要 1.1 人脸检测 1.2 人脸对齐(Face Alignment) 1.3 人脸特征提取(Face Feature ...

  6. 如何使用OpenCV计算机视觉检测帕金森病图片

    在本教程中,您将学习如何使用OpenCV和机器学习在手绘的螺旋和波浪图像中自动检测帕金森病. 本教程来自来自巴西的博士生Joao. Joao有兴趣利用计算机视觉和机器学习基于几何图形(即螺旋和符号波) ...

  7. Pyhton,OpenCV对象检测之——Haar级联人脸及眼睛检测

    Pyhton,OpenCV对象检测之--Haar级联人脸及眼睛检测 1. 效果图 2. 原理 2.1 Haar人脸检测原理 2.2 Haar级联预训练的模型 3. 源码 3.1 图像面部及眼睛检测 3 ...

  8. 使用Python,OpenCV+OCR检测护照图像中的机器可读区域(MRZ Machine-Readable Zones)

    使用Python,OpenCV+OCR检测护照图像中的机器可读区域(MRZ Machine-Readable Zones) 1. 效果图 2. 原理 3. 源码 参考 这篇博客将介绍如何只使用基本的图 ...

  9. 如何使用 OpenCV Python 检测颜色

    作者 | 小白 来源 | 小白学视觉 在这篇文章中,我们将看到如何使用 Python 中的 OpenCV 模块检测颜色,进入这个领域的第一步就是安装下面提到的模块. pip install openc ...

最新文章

  1. H5 画布解决跨域问题,画布保存为图片显示在页面上
  2. 2416开发板上网卡芯片lan9220的时序配置问题
  3. GOCN每日新闻(2017-08-12)
  4. 【深度学习】DIY 人脸识别技术的探索(一)
  5. 多彩投网站动态爬取[python+selenium]
  6. php 自动签到源码,我也来发个自动签到脚本,PHP版
  7. SpringSecurity注销功能
  8. 第04讲: 基础探究,Session 与 Cookies
  9. spring系统学习:20180607--Spring的 IOC 的XML和注解的整合开发
  10. Routing a Marathon Race
  11. 【C++入门】C++多态
  12. 基于jquery,bootstrap数据验证插件bootstrapValidator
  13. 大学生就业新神器 网络电话“通”职场
  14. php store快捷键设置,mac 下 phpstorm 快捷键整理
  15. vue 打印 某块内容成pdf
  16. 英语口语测试评分软件,7款超人气英语口语app深度测评
  17. 12个医学公共数据库
  18. 【MML】华为MML AAA接口联调,Java版本
  19. Chrome谷歌浏览器插件的本地存放位置
  20. python手机版下载-手机python下载

热门文章

  1. 15K左右的Java常见面试题(无答案)
  2. 【博客497】k8s cgroup原理完整剖析
  3. 华为c199刷android原生,华为C199(麦芒3 电信4G版)一键救砖教程,轻松刷回官方系统...
  4. 光模块和光纤如何区分单模,多模
  5. html网页设计大学生作业成品——公益校园网站设计与实现(HTML+CSS+JavaScript)
  6. 微信之父张小龙:做PC版微信是一种破坏
  7. c语言机票预定程序,c语言程序设计报告飞机票预订系统.doc
  8. Java中重定向和转发的区别
  9. 测试速度和高度软件,有没有测海拔高度和车速的APP?请推荐几个,谢谢?
  10. Nvidia显卡驱动 标准版(Standard)下载地址