2012-12-12 20 views
6

मैं एक फ्रेम है और साथ एक आयत specefic स्थिति में एक आयत बनाने के लिए चाहते हैं पर opencv के साथ एक रेक्ट ड्राइंग:एक फ्रेम

#include "opencv2/opencv.hpp" 
#include <opencv2/core/core.hpp> 
#include <opencv2/highgui/highgui.hpp> 
#include<conio.h> 

int main() { 
cv::Mat frame = cv::imread("cmd.png"); 
    cvRectangle(
      &frame, 
      cvPoint(5,10), 
      cvPoint(20,30), 
      cvScalar(255,255,255) 
     ); 
    cv::imshow("test " , frame); 
while (cv::waitKey() != 23) ; 
return 1; 
} 

wenn मैं कोड को चलाने मैं एक स्मृति त्रुटि मिलती है।

Unhandled exception at 0x000007fefd42caed in OpenCV_capture.exe: Microsoft C++ 
exception: cv::Exception at memory location 0x0018ead0.. 

किसी भी विचार क्यों मैं इस मिलता है, और मैं इसे

+0

क्या आप वाकई मूल्यों max.x हैं और max.y फ्रेम की सीमा के भीतर कर रहे हैं? –

+0

हाँ मुझे यकीन है कि अधिकतम फ्रेम – Engine

+0

से एक बिंदु है मैंने अभी एक अन्य कोड के साथ एक परीक्षण किया है और यह भी काम नहीं करता है :(, मैं कुछ गलत कर रहा हूं? मेरा संपादित प्रश्न देखें – Engine

उत्तर

15

आप सी एपीआई के साथ सी ++ एपीआई अप मिश्रण कर रहे हैं कि कैसे हल कर सकते हैं। "CvRectangle" के बदले "सीवी" नाम स्थान में आयत समारोह का उपयोग करें:

int main() { 
    cv::namedWindow("test "); 

    // ... 

:

cv::rectangle(
    frame, 
    cv::Point(5, 10), 
    cv::Point(20, 30), 
    cv::Scalar(255, 255, 255) 
); 

इसके अलावा, आप एक विंडो में छवि है कि आप नहीं खुला था प्रदर्शित करने के लिए कोशिश कर रहे हैं अगर छवि ठीक से लोड नहीं होती है, तो यह एक त्रुटि भी हो सकती है क्योंकि आप फिर खाली छवि पर आकर्षित करने की कोशिश कर रहे हैं।

if (frame.data != NULL) { 
    // Image successfully loaded 
    // ... 
+0

बहुत धन्यवाद निको यह काम करता है। – Engine

+1

ध्यान दें कि आप जांच सकते हैं कि 'cv :: Mat frame' 'frame.empty()' की जांच करके सही ढंग से लोड किया गया है – Chris

2

इस कोड काम करता है:

#include <opencv\cv.h> 
#include <opencv\highgui.h> 
int main() 
{ 
//Window 
cvNamedWindow("Drawing",CV_WINDOW_AUTOSIZE); 
//Image loading 
IplImage* original=cvLoadImage("i.jpg"); 
if(Original==NULL) 
{ 
    puts("ERROR: Can't upload frame"); 
    exit(0); 
} 

cvRectangle(original,cvPoint(100,50),cvPoint(200,200),CV_RGB(255,0,0),5,8); 

//Showing the image 
cvShowImage("Drawing",original); 

cvWaitKey(0); 
//CleanUp 
cvReleaseImage(&original); 
cvDestroyAllWindows(); 

} 
संबंधित मुद्दे