- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
所以我正在尝试腐 eclipse 二进制矩阵。我使用此代码创建矩阵:
cv::Mat tmp = cv::Mat::zeros( IMG->width, IMG->height, CV_8U );
for( auto i = 0 ; i < IMG->width ; i++)
{
for ( auto j = 0 ; j < IMG->height ; j++)
{
if( cv::pointPolygonTest(cv::Mat(contour),cv::Point(i,j),true) < 0 )
{
tmp.at<double>(i,j) = 255;
}
}
}
这是我使用的源图片:
这就是我在循环中得到的(它是 tmp 矩阵):
所以在我尝试使用这段代码腐 eclipse 图片之后:
int erosion_elem = 1;
int erosion_size = 8;
int erosion_type;
if( erosion_elem == 0 ){ erosion_type = MORPH_RECT; }
else if( erosion_elem == 1 ){ erosion_type = MORPH_CROSS; }
else if( erosion_elem == 2) { erosion_type = MORPH_ELLIPSE; }
Mat element = getStructuringElement( erosion_type,
Size( 2*erosion_size + 1, 2*erosion_size+1 ),
Point( erosion_size, erosion_size ) );
/// Apply the erosion operation
erode( binary, erosion_dst, element );`
所以它编译得很好,但我在这一行得到了一个异常(exception):
erode( binary, erosion_dst, element );`
它说这是一个不受支持的数据类型。有谁知道我为什么会收到此异常?
我试图改变矩阵 tmp 的数据类型,但我有同样的错误。
感谢您的帮助!
最佳答案
您的二进制图像像素存储为 unsigned char
(CV_8U -> on 8bits -> 1 byte),您也应该将像素值存储为 unsigned char
cv::Mat tmp = cv::Mat::zeros( IMG->width, IMG->height, CV_8U );
for( auto i = 0 ; i < IMG->width ; i++)
{
for ( auto j = 0 ; j < IMG->height ; j++)
{
if( cv::pointPolygonTest(cv::Mat(contour),cv::Point(i,j),true) < 0 )
{
tmp.at<unsigned char>(i,j) = 255;
}
}
}
(根据评论做出回答)
关于c++ - cv::Erode error with binary cv::mat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17083719/
我很好奇为什么当我尝试放大图片时,背景会扩大,而前景中的对象会缩小。当我尝试腐 eclipse 图片时,背景缩小,对象扩大。应该反过来吗? int type = 2; int size =
有没有办法只处理一个 channel 的IplImage?我只需要为 alpha channel 应用延迟/侵 eclipse 函数。此外,我正在尝试尽可能快地执行此操作,因为我正在处理实时视频处理。
我需要将 OpenCV 函数 dilate() 和 erode() 应用于 Mat 对象,这实际上是一个更大的 ROI图像。 Mat roiImg 是通过为原始图像 img 中的 ROI 创建 hea
所以我正在尝试腐 eclipse 二进制矩阵。我使用此代码创建矩阵: cv::Mat tmp = cv::Mat::zeros( IMG->width, IMG->height, CV_8U ); f
我在 imagemagick 中尝试了以下代码: convert input.jpg -morphology Erode Square output.jpg 我需要将它转换为 RMagick 以便我可
与 OpenCv Dilate 函数的 python 绑定(bind)不同,C# 版本有更多的参数,这些参数都是必需的,我不确定元素参数的元素使用什么。 我尝试了以下方法,输出看起来与 inpur 相
所以我正在使用 cvBlob 和背景减法库。当我处理我的图像并得到蒙版时,我会尝试腐 eclipse 和膨胀它。 当我尝试腐 eclipse 图像时出现错误。错误如下: OpenCV Error: A
#include #include #include #include int main() { // Read input image cv::Mat img= cv::im
我是一名优秀的程序员,十分优秀!