我正在尝试通过执行精明的边缘检测来提取图像的一部分。我已经成功地创建了该对象的掩码。但是,当我对原始图像执行bitwise_and操作以提取前景部分时,会出现以下错误。OpenCV Error: Assertion failed ((mtype == CV_8U || mtype == CV_8S) && _mask.sameSize(*psrc1)) in cv::binary_op, file C:\projects\opencv-python\opencv\modules\core\src\arithm.cpp, line 241

Traceback (most recent call last):

File "C:\Users\Boudhayan Dev\Desktop\extraction.py", line 37, in

new_image = cv2.bitwise_and(img_rgb,img_rgb,mask=mask)

cv2.error: C:\projects\opencv-python\opencv\modules\core\src\arithm.cpp:241: error: (-215) (mtype == CV_8U || mtype == CV_8S) && _mask.sameSize(*psrc1) in function cv::binary_op

我的代码如下-import cv2

import numpy as np

img_rgb = cv2.imread("3.jpg")

cv2.namedWindow("Original Image",cv2.WINDOW_NORMAL)

img = cv2.cvtColor(img_rgb,cv2.COLOR_RGB2HSV)

img = cv2.bilateralFilter(img,9,105,105)

r,g,b=cv2.split(img)

equalize1= cv2.equalizeHist(r)

equalize2= cv2.equalizeHist(g)

equalize3= cv2.equalizeHist(b)

equalize=cv2.merge((r,g,b))

equalize = cv2.cvtColor(equalize,cv2.COLOR_RGB2GRAY)

ret,thresh_image = cv2.threshold(equalize,0,255,cv2.THRESH_OTSU+cv2.THRESH_BINARY)

equalize= cv2.equalizeHist(thresh_image)

canny_image = cv2.Canny(equalize,250,255)

canny_image = cv2.convertScaleAbs(canny_image)

kernel = np.ones((3,3), np.uint8)

dilated_image = cv2.dilate(canny_image,kernel,iterations=1)

new,contours, hierarchy = cv2.findContours(dilated_image, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

contours= sorted(contours, key = cv2.contourArea, reverse = True)[:10]

c=contours[0]

print(cv2.contourArea(c))

final = cv2.drawContours(img, [c], -1, (255,0, 0), 3)

mask = np.zeros(img_rgb.shape,np.uint8)

new_image = cv2.drawContours(mask,[c],0,255,-1,)

new_image = cv2.bitwise_and(img_rgb,img_rgb,mask=mask)

cv2.namedWindow("new",cv2.WINDOW_NORMAL)

cv2.imshow("new",new_image)

cv2.imshow("Original Image",img)

cv2.waitKey()

注意:-如果我尝试用图像的灰度版本执行bitwise_and,则代码可以正常工作。但是,RGB、HSV或任何其他颜色空间都会导致上述错误。

请帮忙。

编辑1-

有问题的图像是这样的-

编辑2-

下面是使用Numpy方法后的结果。如您所见,提取的图像与橙色的大小相同,但它不包含橙色,而是包含遮罩本身。

编辑3-@DanMašek和@lightalchemist,我终于可以提取任何前景图像。

谢谢你

python图片截取特定部分_如何在Python中使用OpenCV提取图像的特定部分?相关推荐

  1. python画图修改背景颜色_如何在 Matplotlib 中更改绘图背景的实现

    介绍 Matplotlib是Python中使用最广泛的数据可视化库之一.无论是简单还是复杂的可视化项目,它都是大多数人的首选库. 在本教程中,我们将研究如何在Matplotlib中更改绘图的背景. 导 ...

  2. python 参数个数 同名函数_如何在python中编写不同参数的同名方法

    我在Java背景下学习Python(3.x). 我有一个python程序,我在其中创建一个personObject并将其添加到列表中.p = Person("John") list ...

  3. python实现随机抽取答题_如何在python中实现随机选择

    这篇文章主要介绍了如何在python中实现随机选择,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 想从一个序列中随机抽取若干元素,或者想生成几个随机 ...

  4. python如何读取uni文件_如何在Python中通过HTTP与UniProt交谈?

    我试图从UniProt获得一些结果,这是一个蛋白质数据库(细节并不重要).我正在尝试使用一种从一种ID转换为另一种ID的脚本.我能够在浏览器上手动执行此操作,但无法在 Python中执行此操作. 在h ...

  5. python调用adb shell命令_如何在python脚本里面连续执行adb shell后面的各种命令

    如何在python脚本里面连续执行adb shell后面的各种命令 adb shell "cd /data/local && mkdir tmp" adb shel ...

  6. python读json文件数组_如何在python中从json文件读取json对象数组

    我有一个名为example.json的json文件,包含以下内容[{ "product/productId" : "XXX", "product/ti ...

  7. python二进制转八进制代码_如何在python中输入二进制、八进制、十进制、十六进制数据并转换...

    最近在学习python,不过跟着课本的作业题目: 分别就计算二进制110110011.八进制256和十六进制的数字a4b5,并转化为十进制求和. 不过写过程中遇到了个问题: 如何在python中输入二 ...

  8. python怎么去掉换行符_如何在Python中删除尾部换行符?

    如何在Python中删除尾部换行符? 什么是Perl的chomp函数的Python等价物,如果它是换行符,它会删除字符串的最后一个字符? 26个解决方案 1473 votes 尝试方法lstrip() ...

  9. 用python画奔驰的标志_如何在CATIA中快速画一个奔驰车标

    原标题:如何在CATIA中快速画一个奔驰车标 咱们这个公众号呀,总是发一些二次开发啊,代码啊什么的,这观众看的啊,是云里雾里的!哎,内位说了:您能不能讲点儿我们听的懂的内容啊?那好,今儿咱们就来说说, ...

最新文章

  1. 从最强AI算力到“元脑”2.0,智算加速产业变革
  2. 第三部分:Android 应用程序接口指南---第二节:UI---第六章 对话框
  3. 挑选合适自己的一门编程语言
  4. 从如何优化SQL入手,提高数据仓库的ETL效率
  5. Android Support Annotation Library使用详解
  6. DeepMind高赞课程:24小时看完深度强化学习最新进展(视频)
  7. 免费jar包最全下载网站
  8. Nvivo 12 Plus WIN版本丨中文英文 软件安装包下载 安装教程步骤丨WIN系统
  9. js判断ie11和qq,opera浏览器(亲测)
  10. vue下个人实现拼图验证码
  11. Google advertiser 开发
  12. 鸿蒙3部曲先看哪部,“斗罗”有四作,那当年齐名的“鸿蒙”系列到底有“几部曲”?...
  13. python实训报告万能模板_实训报告万能模板五篇
  14. 计算机制造属于连续性生产,生产类型
  15. 火灾(火焰)数据集链接
  16. 重识MySQL -《MySQL是怎样运行的》
  17. 实例011阳阳买苹果 阳阳买苹果,每伞苹果0.8元,阳阳第一天买两个苹果,第二天开始每天买前一天的两倍, 直到购买的苹果个数为不超过100的最大值, 编程求阳阳每天平均花多少钱?
  18. 给别人计算机office作业评语,Office操作题自动评分系统的总体评价
  19. 第十一周周末总结+反思
  20. git如何合并多个commits

热门文章

  1. 他俩很般配应该这么说
  2. 普源DG1022U信号发生器技术参数
  3. 【LOJ】apio2016烟火表演-可并堆凸包
  4. 【LOJ NOI Round#2 Day1 T1】单枪匹马【矩阵】
  5. void value not ignored as it ought to be解决方法
  6. linux 安装拼音QQ
  7. 当不小心更改了matlab工具箱的内置函数怎么办?以及matlab指定工具箱卸载
  8. UserWarning: mkl-service package failed to import, therefore Intel(R) MKL initialization ensuring it
  9. PyPubMed|好用的免费文献检索神器
  10. c语言打印输出迷宫地图所有路径