我正在开发一个需要找到红色部分的代码。我正在使用该函数 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。
谁能建议我一种快速获取前景图像的方法?
目前我正在使用BackgroundSubtractorMOG2 类来执行此操作。它很慢。而且我的任务不需要那么复杂的算法。
我可以在暴饮暴食中获得背景图像。相机位置不会改变。所以我相信有一个简单的方法可以做到这一点。
我需要捕捉在相机前面移动的物体的斑点。并且永远只有一个对象。
我不一定需要源代码,但寻找伪代码或如何解决这个问题的想法。我有一个摄像头对准我的水表,想要将使用情况记录到数据库中。过去几周我一直在使用 OpenCV,并且数字检测工作正常。(最后一个数字会带来问题,因为它会无休止地旋转,而不是像前 5 个那样与数字对齐,因此完整数字的显示时间不到一半。)
无论如何,为了获得最佳分辨率,我想跟踪实际的大红色针。现在我要绕一圈找到“最红”的像素,并用它来计算针的角度。只要光线充足并且相机不移动,它就可以工作。
我猜我可以用 Canny 边缘检测来实现一个技巧......最终我只是想找到最长线的角度?针的颜色独特,应该有助于消除很多误报,但我如何实际应用过滤器呢?
(请注意,仪表左下角有一个红色的小旋转器,与指针的颜色相同。我需要确保它不会误触发某些东西。)
我正在使用名为 Halcon 的商业计算机视觉软件开发一个解决方案。我正在考虑将我的解决方案迁移或转换为 Python 中的 OpenCV。我想开始在 Halcon 中开发我的其他计算机视觉解决方案,因为 IDE 非常棒,并且它们生成一个脚本以将它们迁移到 OpenCV。
有谁知道有什么图书馆可以完成这项任务吗?
我想开始开发一个开源 SDK 将 Halcon 转换为 OpenCV。我正在考虑开始开发从 Halcon 到 Python 的所有内部函数。有什么建议吗?
我试图使该图像变薄,但它不断扭曲。
这是我应用细化的相关代码。我也尝试过“瘦”功能而不是“骨架化”,但结果相似。
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 文件会导致问题,但我没有该领域的经验来证实这一点。
我需要一些有关视差图的帮助。
我想知道视差值的确切单位是什么?单位是像素还是毫米?
每个答案将不胜感激
computer-vision disparity-mapping photogrammetry stereoscopy
我是图像处理方面的新手,偶然发现了一个博客,该博客演示了如何使用切片运算符来翻转图像,这是机器学习任务所需要的。
我尝试通过使用 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)
我在这里错过了什么???
我想在所有这些图像中去除背景中的噪声(即使第一个和第三个背景为白色,第二个为黑色),我尝试了这种方法:Removenoisefromthresholdimageopencvpython但它不起作用,怎么办我做吗?
运行这行代码时我收到此错误:
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) 我想改变图像的亮度,只访问像素值。不使用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) computer-vision ×10
opencv ×8
c++ ×4
python ×4
brightness ×1
halcon ×1
python-3.x ×1
scikit-image ×1
stereoscopy ×1