我在我的测试应用程序中成功实现了OpenCV平方检测示例,但现在需要过滤输出,因为它非常混乱 - 或者我的代码是错误的?
我对本文的四个角点感兴趣,以减少偏斜(如此)和进一步处理......
原始图片:
码:
double angle( cv::Point pt1, cv::Point pt2, cv::Point pt0 ) {
double dx1 = pt1.x - pt0.x;
double dy1 = pt1.y - pt0.y;
double dx2 = pt2.x - pt0.x;
double dy2 = pt2.y - pt0.y;
return (dx1*dx2 + dy1*dy2)/sqrt((dx1*dx1 + dy1*dy1)*(dx2*dx2 + dy2*dy2) + 1e-10);
}
- (std::vector<std::vector<cv::Point> >)findSquaresInImage:(cv::Mat)_image
{
std::vector<std::vector<cv::Point> > squares;
cv::Mat pyr, timg, gray0(_image.size(), CV_8U), gray;
int thresh = 50, N = 11;
cv::pyrDown(_image, pyr, cv::Size(_image.cols/2, _image.rows/2));
cv::pyrUp(pyr, …
Run Code Online (Sandbox Code Playgroud) 前一段时间我问了一个关于方形检测的问题,karlphillip提出了一个不错的结果.
现在我想更进一步,找到边缘不完全可见的方块.看看这个例子:
有任何想法吗?我正在使用karlphillips代码:
void find_squares(Mat& image, vector<vector<Point> >& squares)
{
// blur will enhance edge detection
Mat blurred(image);
medianBlur(image, blurred, 9);
Mat gray0(blurred.size(), CV_8U), gray;
vector<vector<Point> > contours;
// find squares in every color plane of the image
for (int c = 0; c < 3; c++)
{
int ch[] = {c, 0};
mixChannels(&blurred, 1, &gray0, 1, ch, 1);
// try several threshold levels
const int threshold_level = 2;
for (int l = 0; …
Run Code Online (Sandbox Code Playgroud) 作为某种"假期项目",我正在玩OpenCV并想要检测和测量内容.
当前工作流程(早期阶段 - 检测):
我的结果有点蹩脚,我不确定什么是正确的方向.我已经让cvBlob在我目前的设置下工作(OSX 10.7.2,Xcode 4.2.1)它是一个更好的方法吗?如果是这样,我该如何以正确的方式实施?
或者我首先需要背景扣除?我尝试过,但之后无法找到轮廓
这是我的形象:
这是我的输出,当我将轮廓绘制回第一张图像时:
UPDATE
我在我的程序中工作,我的输出看起来有点不同......
- (IBAction)processImage:(id)sender
{
cv::Mat forground = [[_inputView image] CVMat];
cv::Mat result = [self isolateBackground:forground];
[_outputView setImage:[NSImage imageWithCVMat:result]];
}
- (cv::Mat)isolateBackground:(cv::Mat &)_image
{
int rh = 255, rl = 100, gh = 255, gl = 0, bh = 70, bl = 0;
cv::cvtColor(_image, _image, CV_RGB2HSV_FULL);
cv::Mat element = getStructuringElement(cv::MORPH_RECT, cv::Size(5, 5));
cv::Mat bgIsolation;
cv::inRange(_image, cv::Scalar(bl, gl, rl), …
Run Code Online (Sandbox Code Playgroud) 在使用OpenCV时,我需要将NSImage转换为OpenCV多通道2D矩阵(cvMat),反之亦然.
最好的方法是什么?
迎接,
Dom
如何根据轮廓区域的大小对轮廓进行排序?我怎样才能获得最大/最小的一个?
如何检查字符串是否是JavaScript中的有效EAN/GTIN条形码?
我需要检查EAN8,EAN12,EAN13,EAN14,EAN18以及GTIN12,GTIN13,GTIN14.
任何人都可以为我提供一些如何使用Xcode在OS X Lion上编译OpenCV 2.3.1的详细指南吗?
我对此感到生气...我得到了源码,使用cmake创建Xcode模板并尝试构建它,但它失败了大约200个错误.
在此先感谢,Dom
解答我的回答帖子.
是否有连接两个(或更多)附近轮廓的功能?看看我的输入/输出,你会明白我的意思......
我的代码:
[... some processing ...]
// getting contours
std::vector<std::vector<cv::Point> > contours;
findContours(input, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE);
// approximate contours
std::vector<std::vector<cv::Point> > contours_poly( contours.size() );
for( int i = 0; i < contours.size(); i++ ) {
approxPolyDP(cv::Mat(contours[i]), contours_poly[i], 5, true );
}
// debugging
cv::Scalar colors[3];
colors[0] = cv::Scalar(255, 0, 0);
colors[1] = cv::Scalar(0, 255, 0);
colors[2] = cv::Scalar(0, 0, 255);
for (int idx = 0; idx < contours_poly.size(); idx++) {
cv::drawContours(output, contours_poly, idx, colors[idx % 3]);
}
Run Code Online (Sandbox Code Playgroud)
要保持问答方面:
我遇到了最新的(v.2.4.2)OpenCV版本的奇怪问题,该版本无法安装,但出现以下错误:
在/OpenCV-2.4.2/modules/core/src/system.cpp:460中包含的文件中:
/OpenCV-2.4.2/release/modules/core/version_string.inc: 37: 1:警告:缺少终止"字符在/OpenCV-2.4.2/modules/core/src/system.cpp:460中包含的文件中:/OpenCV-2.4.2/release/modules/core/version_string.inc:37:错误:缺少终止"字符
出了什么问题?看看我的回答.
我将TestFlight SDK集成到我的iOS应用程序中.在iOS 6.1.2中,有时应用程序会在TestFlight的-takeOff:方法中首次启动应用程序崩溃.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions
{
#ifdef TESTING
[TestFlight takeOff:@"MY_TESTFLIGHT_TEAM_TOKEN"];
[TestFlight setDeviceIdentifier:[[UIDevice currentDevice] uniqueIdentifier]];
#endif
// Override point for customization after application launch.
ProductListViewController *products=[[ProductListViewController alloc] initWithNibName:@"ProductListViewController" bundle:nil];
UINavigationController *navigationController=[[UINavigationController alloc] initWithRootViewController:products];
[products release];
navigationController.toolbarHidden = YES;
navigationController.navigationBarHidden = YES;
self.rootViewController = navigationController;
[self.window setRootViewController:rootViewController];
[navigationController release];
[self.window makeKeyAndVisible];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
任何帮助是极大的赞赏.
谢谢
opencv ×8
c++ ×4
objective-c ×3
contour ×2
macos ×2
barcode ×1
cgimage ×1
cgimageref ×1
cmake ×1
ios ×1
iphone ×1
javascript ×1
node.js ×1
nsimage ×1
osx-lion ×1
sorting ×1
testflight ×1
unix ×1
validation ×1
xcode ×1