标签: computer-vision

从 Point2f 提取数据

我正在开发一个需要找到红色部分的代码。我正在使用该函数 minEnclosingCircle来获取图像的中心。

该函数为我提供中心的方式是矢量格式vector<Point2f>center( contours.size() );。但是我需要这些数据来确定感兴趣区域 (ROI)。有什么方法可以从该点提取数据,以便我可以在 X 和 Y 中获得两个整数坐标?

谢谢!

- 更新 -

我将发布一些代码来尝试更好地解释我想要做什么:

vector<vector<Point> > contours_poly( contours.size() );
vector<Point2f>center( contours.size() );
vector<float>radius( contours.size() );


for( int i = 0; i < contours.size(); i++ )
{   
    approxPolyDP( Mat(contours[i]), contours_poly[i], 3, true );
    minEnclosingCircle( (Mat)contours_poly[i], center[i], radius[i] );
 }
Run Code Online (Sandbox Code Playgroud)

因此,一旦我从图像中获得轮廓,我就会应用该函数minEnclosingCicrle来确定中心。我对 OpenCV 很陌生。我认为它找到的圆心保存在 Point2f 的向量中。我想要做的事情是访问这些点,以获得对象的位置,以确定对象周围的 ROI。

c++ opencv computer-vision

0
推荐指数
1
解决办法
2万
查看次数

背景提取

谁能建议我一种快速获取前景图像的方法?

目前我正在使用BackgroundSubtractorMOG2 类来执行此操作。它很慢。而且我的任务不需要那么复杂的算法。

我可以在暴饮暴食中获得背景图像。相机位置不会改变。所以我相信有一个简单的方法可以做到这一点。

我需要捕捉在相机前面移动的物体的斑点。并且永远只有一个对象。

c++ opencv computer-vision

0
推荐指数
1
解决办法
1124
查看次数

如何用opencv读取电表指针?

我不一定需要源代码,但寻找伪代码或如何解决这个问题的想法。我有一个摄像头对准我的水表,想要将使用情况记录到数据库中。过去几周我一直在使用 OpenCV,并且数字检测工作正常。(最后一个数字会带来问题,因为它会无休止地旋转,而不是像前 5 个那样与数字对齐,因此完整数字的显示时间不到一半。)

无论如何,为了获得最佳分辨率,我想跟踪实际的大红色针。现在我要绕一圈找到“最红”的像素,并用它来计算针的角度。只要光线充足并且相机不移动,它就可以工作。

我猜我可以用 Canny 边缘检测来实现一个技巧......最终我只是想找到最长线的角度?针的颜色独特,应该有助于消除很多误报,但我如何实际应用过滤器呢?

(请注意,仪表左下角有一个红色的小旋转器,与指针的颜色相同。我需要确保它不会误触发某些东西。)

谢谢你!-亚当水表示例

c++ opencv computer-vision

0
推荐指数
1
解决办法
3518
查看次数

将 Halcon 代码迁移到 OpenCV

我正在使用名为 Halcon 的商业计算机视觉软件开发一个解决方案。我正在考虑将我的解决方案迁移或转换为 Python 中的 OpenCV。我想开始在 Halcon 中开发我的其他计算机视觉解决方案,因为 IDE 非常棒,并且它们生成一个脚本以将它们迁移到 OpenCV。

有谁知道有什么图书馆可以完成这项任务吗?

我想开始开发一个开源 SDK 将 Halcon 转换为 OpenCV。我正在考虑开始开发从 Halcon 到 Python 的所有内部函数。有什么建议吗?

python opencv computer-vision halcon

0
推荐指数
1
解决办法
6467
查看次数

细化/骨架化扭曲了我的形象

我试图使该图像变薄,但它不断扭曲。

在此输入图像描述

在此输入图像描述

这是我应用细化的相关代码。我也尝试过“瘦”功能而不是“骨架化”,但结果相似。

from skimage.morphology import skeletonize, thin
new_im = cv2.imread(im_pth)
gray = cv2.cvtColor(new_im, cv2.COLOR_BGR2GRAY)
ske = (skeletonize(gray//255) * 255).astype(np.uint8)
cv2.imshow("image", gray)
cv2.waitKey(0)
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

我的目标是在细化后获得与此类似的形状:

在此输入图像描述

我究竟做错了什么?我在网上读到,有时 jpg 文件会导致问题,但我没有该领域的经验来证实这一点。

python opencv image-processing computer-vision scikit-image

0
推荐指数
1
解决办法
6047
查看次数

视差值的单位是什么?

我需要一些有关视差图的帮助。

我想知道视差值的确切单位是什么?单位是像素还是毫米?

每个答案将不胜感激

computer-vision disparity-mapping photogrammetry stereoscopy

0
推荐指数
1
解决办法
922
查看次数

切片运算符 img[:,:,::-1] 对图像有何作用?

我是图像处理方面的新手,偶然发现了一个博客,该博客演示了如何使用切片运算符来翻转图像,这是机器学习任务所需要的。

我尝试通过使用 OpenCV 读取 3 通道图像来实现相同的效果,如下所示,但它没有按预期工作!

切片运算符所做的就是将 BGR 图像转换为 RGB 图像(无翻转!)。

import cv2
from matplotlib import pyplot as plt
%matplotlib inline

img = cv2.imread('path_to_image')
img = img[:,:,::-1]
plt.imshow(img)
plt.show()
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么???

image-processing computer-vision python-3.x deep-learning

0
推荐指数
1
解决办法
7030
查看次数

从 opencv 中的阈值文本图像中去除噪声

我有这些图像: 在此输入图像描述

我想在所有这些图像中去除背景中的噪声(即使第一个和第三个背景为白色,第二个为黑色),我尝试了这种方法:Removenoisefromthresholdimageopencvpython但它不起作用,怎么办我做吗?

PS 这是我试图增强的原始图像。 在此输入图像描述

python opencv computer-vision

0
推荐指数
1
解决办法
1297
查看次数

cv2.error:OpenCV(4.5.2)resize.cpp:4051:错误:(-215:断言失败)!函数“cv :: resize”中的ssize.empty()

运行这行代码时我收到此错误:

pixels.append( cv2.resize(cv2.imread(raw_folder  + folder +"/" + file),dsize=(128,128)))**
Run Code Online (Sandbox Code Playgroud)

错误:

cv2.error: OpenCV(4.5.2) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-vi271kac\opencv\modules\imgproc\src\resize.cpp:4051: 
error: (-215:Assertion failed) !ssize.empty() in function 'cv::resize'
Run Code Online (Sandbox Code Playgroud)

python opencv computer-vision

0
推荐指数
1
解决办法
7万
查看次数

用c++改变图像亮度

我想改变图像的亮度,只访问像素值。不使用opencv函数(例如convertTo)

输入:图像,数字

num 表示亮度常数值

这是我的代码,结果看起来很奇怪。有什么问题吗?

原来的

结果

cv::Mat function(cv::Mat img, int num){
    cv::Mat output;
    output = cv::Mat::zeros(img.rows, img.cols, img.type());
    for (int i = 0; i < img.rows; i++)
    {
        for (int j = 0; j < img.cols; j++)
        {
            for (int c = 0; c < img.channels(); c++)
            {
                output.at<cv::Vec3b>(i, j)[c] = img.at<cv::Vec3b>(i, j)[c] + num;
            
                if (output.at<cv::Vec3b>(i, j)[c] > 255){
                    output.at<cv::Vec3b>(i, j)[c] = 255;
                }
                else if (output.at<cv::Vec3b>(i, j)[c] < 0)
                {
                    output.at<cv::Vec3b>(i, j)[c] = 0;
                }

            }
        
        } …
Run Code Online (Sandbox Code Playgroud)

c++ opencv image-processing brightness computer-vision

0
推荐指数
1
解决办法
522
查看次数