小编sup*_*anu的帖子

使用opencv减去图像

我想减去两张图片.我的问题是cvSub() - 函数饱和.我想做的是:

1)将原始图像转换为灰度.

2)拍摄灰度图像(值为0-255).

3)减去图像(值从-255到255) - >使用cvSub()重新缩放的问题.

4)通过乘以0.5并添加128来重新缩放.

我想过将灰度图像从8位改为16位,但随后一切都变得更糟,它变成了许多代码行,最后它没有用完.

c++ opencv

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

使用OpenCV的边界框

我想使用opencv BoundingRect在白色背景上获得填充黑色圆圈的边界框.我使用了http://cgi.cse.unsw.edu.au/~cs4411/wiki/index.php?title=OpenCV_Guide#Finding_bounding_boxes_around_regions_of_a_binary_image中的示例代码,但未能获取边界框的属性并将其绘制到图像中.我认为应该是一个简单的问题,但我仍然做不到...

如果你能写下一些示例代码,那就太好了.

谢谢.


我目前使用的图片是1392x1040像素的图像,中间有一个大黑圈(直径约1000像素),图像的其余部分是白色.

我的源代码是:

#include <iostream>
#include <vector>
#include <cv.h>
#include <highgui.h>

using namespace std;

int main(int argc, char** argv){


IplImage* img_in = cvLoadImage("Schwarzer_Kreis.png",1);


IplImage* img_working = cvCreateImage(cvGetSize(img_in), 8, 1);
cvCvtColor(img_in, img_working, CV_BGR2GRAY);

CvSeq* seq;

vector<CvRect> boxes;

CvMemStorage* storage = cvCreateMemStorage(0);
cvClearMemStorage(storage);

cvFindContours(img_working, storage, &seq, sizeof(CvContour), CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE, cvPoint(600,200));

CvRect boundbox ;

for(; seq; seq = seq->h_next) {
 boundbox = cvBoundingRect(seq);
 boxes.push_back(boundbox);
}

for (int ii=0; ii<boxes.size(); ii++) {
cout << boxes[ii].x << endl;
cout << …
Run Code Online (Sandbox Code Playgroud)

c++ opencv

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

标签 统计

c++ ×2

opencv ×2