मैं आईओएस में खुले सीवी का उपयोग कर रहा हूं। मैंने छवि में शो के रूप में पहले से ही एक छवि में पेपर शीट की सीमा का पता लगाया है, और अब मुझे फसल फ्रेम को समायोजित करने के लिए इन सीमा रेखा को स्पर्श पर खींचना होगा। हम सीमा रेखा को कैसे समायोजित कर सकते हैं और हम सीमा के अंदर छवि को कैसे फसल कर सकते हैं?कोनों को समायोजित करें और छवि को खोलें सीसी
ओपनसीवी में यह संभव है या मैं इसके लिए ओपनजीएल का उपयोग करता हूं?
@moosgummi: मैं नीचे दी गई विधि में
- (cv::Mat)finshWork:(cv::Mat &)image
{
Mat img0 =image;
Mat img1;
cvtColor(img0, img1, CV_RGB2GRAY);
// apply your filter
Canny(img1, img1, 100, 200);
// find the contours
vector< vector<cv::Point> > contours;
findContours(img1, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);
// you could also reuse img1 here
Mat mask = Mat::zeros(img1.rows, img1.cols, CV_8UC1);
// CV_FILLED fills the connected components found
drawContours(mask, contours, -1, Scalar(255), CV_FILLED);
// let's create a new image now
Mat crop(img0.rows, img0.cols, CV_8UC3);
// set background to green
crop.setTo(Scalar(0,255,0));
// and copy the magic apple
img0.copyTo(crop, mask);
// normalize so imwrite(...)/imshow(...) shows the mask correctly!
normalize(mask.clone(), mask, 0.0, 255.0, CV_MINMAX, CV_8UC1);
std::vector<cv::Point> biggestContour = contours[contours.size()-1];
NSLog(@"%d",biggestContour[0].x);
NSLog(@"%d",biggestContour[0].y);
cv::Mat paperImage =[self getPaperAreaFromImage:image:biggestContour];
//return crop;
return paperImage;
}
धन्यवाद अपने विधि कॉल सभी
कैसे आप ग्रिड बनाया? क्या आप कुछ नमूना कोड साझा करने के इच्छुक होंगे? मेरे पास समान प्रश्न हैं, यहां पोस्ट किया गया है: http://stackoverflow.com/questions/13269432/perspective-transform-crop-in-ios-with-opencv – mmackh
@Gryphon मुझे यह भी जानने में दिलचस्पी है। आपने ग्रिड कैसे बनाया? – alandalusi
@Gryphon कृपया मेरी पोस्ट देखें http://stackoverflow.com/questions/13594391/ios-drawing-a-rectangle-on-an-imageview-and-adjusting-borders – alandalusi