- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试确定动脉的宽度,并制定了一个非常粗略的程序来验证 drawContours 是否合适。我的问题是轮廓仅打印黑色或白色线条,而不是我尝试使用的彩色线条。我不确定我正在绘制的 img 是否仅限于黑白,或者我的轮廓设置有误。第二个图像是附加到原始图像的轮廓。
import cv2
import numpy
from FileSupport import *
# Declared Variables ###########################
# file vars
image_file_name = '14.05.25 hrs __[0011697].avi' # this will be given through some file selection of the user
temp_image_file_path = ReturnTempImagePath() # gives file path for .avi files to be stored
# image vars
sample_start_row = 144 # measurements are based off the 640x480 sample image
sample_end_row = 408
sample_start_col = 159
sample_end_col = 518
# colors
RED = (0, 0, 255) # opencv uses BGR not RGB
GREEN = (0, 255, 0)
BLUE = (255, 0, 0)
# Pull image ###################################
print("Getting image from ", image_file_name, "\n")
artery_vid = cv2.VideoCapture(ReturnImagePath(image_file_name))
if not artery_vid.isOpened():
print("Couldn't open file")
sys.exit()
success, image = artery_vid.read()
i_frame = 0
while success:
image = image[sample_start_row:sample_end_row, sample_start_col:sample_end_col]
cv2.imwrite(temp_image_file_path + "frame%i.jpg" % i_frame, image)
# -----Just trying to draw around artery-------
img = cv2.imread(temp_image_file_path + "frame%i.jpg" % i_frame, cv2.IMREAD_GRAYSCALE)
hierarchy, threshold = cv2.threshold(img, 120, 200, cv2.THRESH_BINARY)
contours, _ = cv2.findContours(threshold, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
cv2.imshow("Image Without Contours", image) # contour is also destructive
cv2.drawContours(img, contours, -1, GREEN, 2) # I am expecting the contour lines to be green
cv2.imshow("Image With Contours", img)
cv2.imshow("Threshold Image", threshold)
cv2.waitKey(0)
cv2.destroyAllWindows()
# ---------------------------------------------
print("Image %i Complete" % i_frame, "\n")
i_frame += 1
success, image = artery_vid.read()
最佳答案
您的图像是灰度图像,因此您需要在绘制彩色轮廓之前将其转换为 BGR。
contours, _ = cv2.findContours(threshold, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
cv2.imshow("Image Without Contours", image) # contour is also destructive
img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR) #add this line
cv2.drawContours(img, contours, -1, GREEN, 2) # I am expecting the contour lines to be green
关于python - cv2.drawContours 没有显示正确的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58959488/
我有以下代码在 OpenCV 3.4.1 上运行良好,但现在不能在 OpenCV 4.1.0 上运行并给出错误。我不知道如何使代码适应新版本,你能帮我吗?非常感谢 def ImageProcessin
我从二值图像中过滤小 Blob (面积小于阈值的轮廓)。掩码是二值图像。 如果我注释行 drawContours(mask, contours, -1, Scalar(255), CV_FILLED
我正在尝试确定动脉的宽度,并制定了一个非常粗略的程序来验证 drawContours 是否合适。我的问题是轮廓仅打印黑色或白色线条,而不是我尝试使用的彩色线条。我不确定我正在绘制的 img 是否仅限于
在我的 Android 应用程序中,我从图库中获取了一张位图图像,内容如下 Bitmap bitm = getMyImage("Thanks!"); 我有一个名为 mat 的 Mat,声明如下: Ma
我想用 OpenCV drawContours 函数绘制自定义点序列。 我的代码: std::vector > contours; std::vector contour1; contour1.pus
我正在研究在 opencv python 中查找和绘制轮廓的示例。但是当我运行代码时,我只看到一个没有绘制轮廓的黑色窗口。我不知道我哪里错了。代码是: import numpy as np impor
我正在尝试使用 OpenCV 中的 cv2.drawContours 函数显示填充轮廓。我已经根据 Canny 检测得出的边缘图像开发了一个轮廓列表,并且正在为层次结构定义启用 RETR_EXTERN
我有一个要绘制的轮廓列表。其中一些轮廓自相交。 当我想用 OpenCV 绘制它们时,我只需使用 cv::drawContours 函数。 但是,这种行为很奇怪。 这里引用官方documentation
我遵循了 this page 上的教程但是当行 cv2.drawContours(im,contours,-1,(0,255,0),3) 被执行时,似乎什么也没有发生。我期待看到带有绿色轮廓的 sta
我正在尝试在 Xamarin 上开发移动应用程序。首先,我正在为 Android 设备做这件事。我希望 Oncamera 功能能够自动检测轮廓并测量物体的大小。作为主要步骤,我正在尝试实时检测轮廓。阅
需要堆栈溢出的强大帮助。实际上,我开发的应用程序必须通过 OCR(我正在使用 tesseract)文档进行分析,并提取我可以从中提取的所有文本。这是图像类型的示例: Image including t
我正在尝试从图像中绘制轮廓。我从我的网络摄像头得到了一个框架并提取了它的轮廓。然后,我按区域过滤它们,并调用 drawContours() 来显示它们。问题是当我尝试绘制过滤后的轮廓时...如果我绘制
我是在 Visual Studio 上使用 OpenCV 的新手,最近我重新安装了我的 VS2012 以使其使用 OpenCV 2.4.2 工作。 我正在尝试通过鼠标单击顶点并将它们推送到 CvSeq
我有一个 python 代码,我正在将它移植到 c++。我在 OpenCV c++ 中遇到了 drawContours 函数的奇怪问题。 self.contours[i] = cv2.convexHu
这个问题在这里已经有了答案: Contour shows dots rather than a curve when retrieving it from the list, but shows t
我有以下图像,其中包含无人机捕获的汽车和空 parking 位。我想检测空的公园空间并绘制一个看起来像预期图像的框。 这是我的代码: import cv2 import numpy as np fro
我有一个包含 4 个点的 vector : vector > data(4); data[0].push_back(Point(0,0)); data[1].push_back(Point(0,120
我试图找到最大的正方形并将其绘制在原始图像上。 当我打电话 drawContours(input,(screenCnt),-1,Scalar(255,0,0),3); 出现以下错误: E/cv::er
我正在尝试绘制最大物体的轮廓。 首先,我将展示一张绘制所有轮廓的图像: 为了找到最大的对象,我使用了这段代码: maxsize = 0 best = 0 count = 0 for cnt in
按照@Silencer 的建议,我使用了他发布的代码 here围绕我图像中的数字绘制轮廓。在某些时候,处理像 0,6,8,9 这样的数字时,我看到它们的内部轮廓(圆圈)也被填充了。我怎样才能防止这种情
我是一名优秀的程序员,十分优秀!