草庐IT

cv2.rectangle

全部标签

c++ - 使用 OpenCV 保存整数 CV_32S 图像

我正在处理包含有符号整数数据的TIF图像。成功输入并处理后,我需要以相同的格式输出图像(输入和输出两个*.tif文件)。对于输入,我知道OpenCV不知道数据是有符号的还是无符号的,所以它假设是无符号的。使用thistrick解决了这个问题(手动切换cv::Mat的类型)。但是,当我输出图像并再次加载它时,我没有得到预期的结果。该文件包含多个段(像素组),格式如下(我必须使用此格式):不属于任何段的所有像素的值为-9999属于单个段的所有像素具有相同的正整数值(例如,第一段的所有像素都具有值1,第二段的所有像素都具有2等)下面是示例代码:voidImageProcessor::save

c++ - cv::imshow 有时很慢

cv::imshow有问题。对于我的图像大小,它通常会消耗大约1-2毫秒的处理时间,但在我的处理管道中的某个时刻,它会为相同类型的图像使用4-8毫秒。我有一个方法voidTool::displayImage(){startTimeMeasure();cv::imshow("output",image);evaluateTimeMeasure();}image是一个成员变量,highgui窗口是在别处创建的。时间测量适用于boost::posix_timeptime和time_duration。cvStartWindowThread();被调用了。重点是,如果在复杂的处理链(从视频文件加

c++ - OpenCV 错误:cv::cvtColor 中的断言失败 (scn == 3 || scn == 4),文件 ..\..\..\..\opencv\modules\imgproc\src\color.cpp,第 3737 行

您好,我正在尝试从OpenCV运行此示例代码:#include"opencv2\opencv.hpp"usingnamespacecv;intmain(int,char**){VideoCapturecap(0);//openthedefaultcameraif(!cap.isOpened())//checkifwesucceededreturn-1;Matedges;namedWindow("edges",1);for(;;){Matframe;cap>>frame;//getanewframefromcameracvtColor(frame,edges,CV_BGR2GRAY);G

c++ - cv::findContours 正在修改源图像 OpenCV 2.3

根据OpenCV文档,cv::findContours中的源图像被获取为const,但我的应用程序发生了一些奇怪的事情。我正在使用cv::inRange函数获取特定颜色的阈值图像,然后使用cv::moments,我可以获得阈值图像中白色像素的中心,这工作正常。此外,我想实现用于查找最大轮廓并在该轮廓中定位中心力矩的代码。在代码中仅添加cv::findContours后,我在输出中发现了奇怪的行为,之后我想使用以下代码检查源图像发生了什么:cv::MatcontourImage;threshedImage.copyTo(contourImage);//threshedImageisthe

c++ - 在图片框中以 cv::Mat 格式显示网络摄像头提要

我正在使用OpenCV从网络摄像头获取实时流并检测面部。我正在调整它们的大小,以便只显示我的脸。但问题是我在C++WindowsForms中做所有这些,我希望它显示在PictureBox中,而不是在OpenCV中显示imshow()窗口。我正在使用cv::Mat,所以在图片框中显示时遇到了很多问题。我试过将它转换成IplImage,但也没有用。另外,我试过谷歌,但找不到有效的解决方案。我已经尝试了3天了。这是我的显示代码:face=getFace(frame);cv::imshow("window",face);其中frame和face是cv::Mat 最佳

c++ - 协变 cv 限定符是否适用于 C++ 中的原始类型?

在C++中,减少派生类中返回类型的cv限定符是有效的:classBase{virtualconstBase*f();};classDerived:publicBase{Base*f()override;};这对指向原始类型的指针有效吗?classBase{virtualconstint*f();};classDerived:publicBase{int*f()override;}; 最佳答案 协变cv限定符是否适用于C++中的基本类型?没有§10.3.7VirtualfunctionsThereturntypeofanoverrid

c++ - cv::Mat 序列的逐像素中值

注意:我不是在问中值滤波器。我有一系列图像让我们说:std::arraysequence;我想将所有这些图像融合在一起。这一张图片应该满足:新图像的每个像素都是序列中相应像素的中值。换句话说:Result(i,j)=median(sequence[0](i,j),sequence[1](i,j),...,sequence[N](i,j));是否有内置函数可以做到这一点?最快的方法是什么?到目前为止,我的尝试是:遍历所有序列中的每个像素并排序,然后取中位数,然后将其存储在结果中。然而,这太过分了。 最佳答案 您可以使用直方图计算每个位

c++ - 如何将 cv::Mat 转换为 CvArr?

我花了很多时间搜索如何从cv::Mat或CvMat转换为CvArr但没有收获,请帮助我,谢谢。 最佳答案 Matimg=imread("C:\MyPic.jpg",CV_LOAD_IMAGE_GRAYSCALE);IplImagetmp=img;cvErode(&tmp,&tmp,0,2);Matlaser=&tmp;imshow("Eroded",laser);我通过这种方式将cv::Mat转换为CvArr。不要直接使用tmp,而是使用&tmp。 关于c++-如何将cv::Mat转换为

c++ - 键入对 `cv::fastFree(void*)' 的 undefined reference

我在Win8、最新的MinGW和EclipseKeplerR1、CDT上开始了opencv2.4.7的教程。C++编译器包含引用[path-to-opencv]\open247\build\include。在MinGWC++链接器中,我添加了库路径[path-to-opencv]\open247\build\x64\vc11\lib。vc11目录包含我读过的VisualStudio库。用MinGW编译它们还可以吗?我为这个示例添加了核心和highgui库(我认为我们需要的不只是那些)。但是,对于下面这个简单的空闲代码,我引发了以下编译错误。#include#includeusingna

c++ - 用于复制 cv 引用限定符的类型特征

用C++编写类似库的代码我发现copy_cv_reference_t类型特征有特殊需求:structA;structB;static_assert(std::is_same,B>{});static_assert(std::is_same,Bconst>{});static_assert(std::is_same,volatileB>{});static_assert(std::is_same,volatileBconst>{});static_assert(std::is_same,B&>{});static_assert(std::is_same,Bconst&>{});stati